10 Kullanıcı Kaydı ile hesap oluşturma

Standart üyelik sisteminde üyelik işlemleri Account adında bir Controller üzerinden yürütülür. Ancak biz projemizde Hesap adında bir Controller kullanacağız.

Controller klasörüne HesapController.cs adında bir dosya oluşturuyoruz. Bu dosya içine controller yapısını hazırlaması için mvc-controller kısa yolunu kullanıyoruz.

Eğer sizde mvc-controller yazınca herhangi bir tamamlama gelmiyorsa lütfen Essential Asp.net core eklentisini yüklediğinizden emin olunuz.
Proje için gerekli yüklemeleri buradan kontrol edin.

Kayıt işlemleri için Kayit adında bir action kullanacağız. Özetle kayıt adresimiz /Hesap/Kayit olacak
Controllers\HesapController.cs

using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
//using YesilayKlubu.Models;

namespace YesilayKlubu.Controllers
{
    public class HesapController : Controller
    {
        //Oturum işlerini yapmamızı sağlar
        private SignInManager<AppUser> signInManager;
        //Kullanıcı işlemlerini yapmamızı sağlar
        private UserManager<AppUser> userManager;
        public HesapController(SignInManager<AppUser> _s, UserManager<AppUser> _u)
        {
            signInManager = _s;
            userManager = _u;
        }
        public IActionResult Kayit()
        {
            return View();
        }

     }
}

asp.net Identity altyapısını kullanarak üyelik sisteminde gerekli olan bir çok işlemi hızlı bir şekil gerçekleştireceğiz. Kullanıcı işlemleri için UserManager sınıfını Giriş/Çıkış işlemleri için SignInManager sınıfını kullanacağız.

Program.cs içinde tanımladığımız üyelik sitemi nesnelerinin HesapController içinden erişilebilir olması için yapıcı (constructor) metoddan bunları talep etmemiz gerekiyor.

Kayit action u için View ekletmek için, Kayit action u içinde sağ tuş ile gelen menüden “Add View” seçiyoruz.

Eğer sizde bu seçenek yok ise lütfen aspnet core switcher eklentisinin yüklü olduğundan emin olunuz.

Daha önce tanımladığımız Kayit modelini kullanarak kayıt formundan bilgi girişi sağlayacağız

Views\Hesap\Kayit.cshtml

@model Kayit
@{
    ViewData["Title"] = "Hesap oluştur";
}
@if (ViewBag.OK == null)
{
    <form method="post">
       <div asp-validation-summary="All" class="text-danger"></div>

        <div class="row mb-3">
            <div class="col-3">
                <label asp-for="Ad" class="label-control"></label>
            </div>
            <div class="col-9">
                <input asp-for="Ad" class="form-control">
                <span asp-validation-for="Ad" class="text-danger"></span>
            </div>
        </div>
        <div class="row mb-3">
            <div class="col-3">
                <label asp-for="Soyad" class="label-control"></label>
            </div>
            <div class="col-9">
                <input asp-for="Soyad" class="form-control">
                <span asp-validation-for="Soyad" class="text-danger"></span>
            </div>
        </div>
        <div class="row mb-3">
            <div class="col-3">
                <label asp-for="Email" class="label-control"></label>
            </div>
            <div class="col-9">
                <input asp-for="Email" class="form-control">
                <span asp-validation-for="Email" class="text-danger"></span>
            </div>
        </div>
        <div class="row mb-3">
            <div class="col-3">
                <label asp-for="OkulNumarasi" class="label-control"></label>
            </div>
            <div class="col-9">
                <input asp-for="OkulNumarasi" class="form-control">
                <span asp-validation-for="OkulNumarasi" class="text-danger"></span>
            </div>
        </div>
        <div class="row mb-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 mb-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">
            <div class="col-3"></div>
            <div class="col-9">
                <button type="submit" class="btn btn-primary">Kaydet</button>
                <button type="reset" class="btn btn-danger">Sıfırla</button>
            </div>
        </div>
    </form>
}
else
{
    <div class="alert-success alert">
        Üye kaydınız başarıyla gerçekleşti.
    </div>
}
@section Scripts{
<partial name="_ValidationScriptsPartial" />
}

Yukarıdaki formdan post ile gelen bilgileri aşağıdaki action ile işleyeceğiz.

Controllers\HesapController.cs


        [HttpPost]
        public async Task<IActionResult> Kayit(Kayit m)
        {
            if (ModelState.IsValid)
            {
                var kullanici = new AppUser
                {
                    UserName = m.Email,
                    Ad = m.Ad,
                    Soyad = m.Soyad,
                    Email = m.Email,
                    OkulNumarasi = m.OkulNumarasi
                };
                var sonuc = await userManager.CreateAsync(kullanici, m.Sifre);
                if (sonuc.Succeeded)
                {
                    ViewBag.OK = "Üye kaydınız başarıyla gerçekleşti, Lütfen giriş yapınız";
                    string icerik = $"Sayın {m.Ad} {m.Soyad}  <br> Sitemize kayıt olduğunuz için teşekkür ederiz ";
                    icerik += $" Giriş yapmak için {this.Request.Scheme}://{this.Request.Host}/Hesap/";
                    Islemler.MailGonder("Hoşgeldin", icerik, m.Email);
                }
                else
                {
                    //kayıt hata ile sonuçlanırsa ön tarafa 
                    //göstermesi için hata ekle
                    ModelState.AddModelError("", string.Join("<br>",
                    sonuc
                    .Errors
                    .Select(x => x.Description)
                    .ToList()));
                }
            }
            return View(m);
        }

Yorum yapın