17 Şifremi unuttum

HesapController.cs içine şifre sıfırlamak için email sağlayacak action yapısını ekliyoruz


        public IActionResult SifremiUnuttum()
        {
            // TODO: Your code here
            return View();
        }     
       

SifremiUnuttum.cshtml içine aşağıdaki kodları yazıyoruz

@{
    ViewData["Title"] = "Şifrenizi mi unuttunuz?";
}

<form method="post" class="card col-6 mx-auto">
    <div class="row">
        <h1 class="text-center m-5">Şifre unuttum</h1>
        <div class="col-3">
            <label for="Email" class="label-control">Email Adresiniz</label>
        </div>
        <div class="col-9">
            <input required class="form-control" type="email" name="Email" id="Email">
            @if (ViewBag.Hata != null) 
            {
                <div class="alert-danger danger p-3 ml-0 m-2">
                    @ViewBag.Hata
                </div>
            }
        </div>
    </div>
    <div class="row mt-3">
        <div class="col-3"></div>
        <div class="col-9">
            <button type="reset" class="btn btn-danger">Sıfırla</button>
            <button type="submit" class="btn btn-success">Gönder</button>

        </div>
    </div>
</form>

HesapController.cs içine tukarıdaki formdan gelen bilgileri işleyecek ve şifre sıfırmala bağlantısı üretip email gönderecek action ekleniyor

 [HttpPost]
        public async Task<IActionResult> SifremiUnuttum(string Email)
        {
            if (string.IsNullOrEmpty(Email))
            {
                ViewBag.Hata = "Email alanı boş bırakılamaz";
                return View();
            }

            AppUser kullanici = await userManager.FindByEmailAsync(Email);
            if (kullanici == null)
            {
                ViewBag.Hata = "Girilen email ile sistemde kullanıcı yok";
                return View();
            }

            //şifre sıfırlama linkini oluştur
            var token = await userManager.GeneratePasswordResetTokenAsync(kullanici);
            var link = Url.Action(nameof(SifreSifirla), "Hesap",
            new { token, email = kullanici.Email }, Request.Scheme);
            //email ile gönderiliyor
            string emailmesaj = $"Merhaba {kullanici.Ad} <br> Şifrenizi sıfırlamak için aşağıdaki bağlantıya tıklayınız <br>";
            Islemler.MailGonder("Şifre sıfırlama bağlantısı", emailmesaj + link, kullanici.Email);
            string mesaj = $" <i class='bi bi-check'></i>Sıfırlama  bağlantısı <b>{Email}</b> adresine gönderildi <br>";

            string l = Url.ActionLink(nameof(Index), "Hesap", null, Request.Scheme);
            mesaj += $"<a href='{l}'>Giriş yapın</a>";
            return View("Views/Shared/_basarili.cshtml", mesaj);


        }