18 şifre sıfırlama

HesapController.cs içine yeni Şifre belirlemek için gerekli actionları ekliyoruz

 public IActionResult SifreSifirla()
        {
            return View();
        }

Models klasörü içine SifreSifirla.cs modelini oluşturarak şifre sıfırlamak için gerekli olan bilgileri model içine tanımlıyoruz

Models\SifreSifirla.cs

using System.ComponentModel.DataAnnotations;

public class SifreSifirla
{
    [Required(ErrorMessage ="Email boş bırakılamaz")]
    public string Email { get; set; }
    [Required(ErrorMessage ="Token boş bırakılamaz")]
    public string Token { get; set; }

    [Display(Name ="Şifre")]
    [DataType(DataType.Password)]
    [Required(ErrorMessage ="Şifre boş bırakılamaz")]
    public string Sifre { get; set; }
    
    [Compare("Sifre")]    
    [Display(Name ="Şifre tekrarı")]
    [DataType(DataType.Password)]
    [Required(ErrorMessage ="Şifre tekrarı boş bırakılamaz")]
    public string SifreTekrari { get; set; }
}

Views\Hesap\SifreSifirla.cshtml içine yukarıdaki formu oluşturacak kodları yazıyoruz

@model SifreSifirla
@{
    ViewData["Title"] = "SifreSifirla";
    string e=Context.Request.Query["Email"];
    string t=Context.Request.Query["Token"];
}
<form method="post">
    <div class="text-danger" asp-validation-summary="All"></div>
    <input type="hidden" name="Email" value="@e" />
    <input type="hidden" name="Token" value="@t"/>
<h1 class=" text-center">Şifre sıfırla</h1>
    <div class="row mt-3">
        <div class="col-3">
            <label asp-for="Sifre" class="label-control"></label>
        </div>
        <div class="col-9">
            <input asp-for="Sifre" class="form-control">
            <span asp-validation-for="Sifre" class="text-danger"></span>
        </div>
    </div>
    <div class="row mt-3">
        <div class="col-3">
            <label asp-for="SifreTekrari" class="label-control"></label>
        </div>
        <div class="col-9">
            <input asp-for="SifreTekrari" class="form-control">
            <span asp-validation-for="SifreTekrari" class="text-danger"></span>
        </div>
    </div>
    <div class="row mt-3">

        <div class="col-9 offset-3">
            <button type="reset" class="btn btn-danger">Gönder</button>
            <button type="submit" class="btn btn-success">Gönder</button>
        </div>
    </div>
</form>
@section Scripts{
<partial name="_ValidationScriptsPartial" />
}

HesapController.cs içine yeni yukarıdaki formdan gelen bilgileri işleyerek yeni şifre belirleyen kodları yazıyoruz.

Aşağıda kullanılan email gönderim metoduna erişmek için buraya ziyaret edebilirsiniz

      
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> SifreSifirla(SifreSifirla m)
        {
            if (!ModelState.IsValid)
                return View(m);

            var kullanici = await userManager.FindByEmailAsync(m.Email);
            if (kullanici == null)
                RedirectToAction(nameof(SifremiUnuttum));

            var sifirla = await userManager.ResetPasswordAsync(kullanici, m.Token, m.Sifre);
            if (!sifirla.Succeeded)
            {
                foreach (var error in sifirla.Errors)
                {
                    ModelState.TryAddModelError(error.Code, error.Description);
                }

                return View();
            }

            return View("Views/Shared/_basarili.cshtml", "Şifreniz başarıyla değiştirildi");
        }

“18 şifre sıfırlama” üzerine bir yorum

Yorum yapın