ben

OMÜ , Bilgisayar Mühendisliği, 13'

22 Eylül 2022 Perşembe

User Repository Signup

Öncelikle view kısmında yer alan yeniden şifre girme alanı için modelde görünen fakat db ye eklenmeyecek RePassword property si eklememiz gerekiyor.

User modeline property ekleyelim.

 public string RePassword { get; set; }

Map Katmanındaki UserConfiguration class'ına aşağıdaki moutu ekleyelim.

     builder.Ignore("RePassword");

SignUp View dosyasındaki input alanlarını user modele bağlatalım:

@model User
<section id="get-a-quote" class="get-a-quote">
    <div class="container" data-aos="fade-up">
        <div class="row g-0">
            <div class="col-lg-2"></div>
            <div class="col-lg-4 quote-bg" style="background-image: url(/img/quote-bg.jpg);"></div>
            <div class="col-lg-5">
                <form role="form" asp-action="SignUp" asp-controller="User" method="post" enctype="multipart/form-data" class="php-email-form">
                    <h2 style="text-align: center;">Aramıza Katılmak İstermisin?</h2>
                    <div class="row gy-4 mt-5">
                        <div class="col-md-12">
                            <input type="text" asp-for= "@Model.NameSurname" class="form-control" placeholder="İsim Soyisim Giriniz" required>
                        </div>
                        <div class="col-md-12 ">
                            <input type="text" class="form-control" asp-for="@Model.UserName"   placeholder="Kullanıcı Adınızı Giriniz" required>
                        </div>
                        <div class="col-md-12 ">
                            <input type="password" class="form-control" asp-for="@Model.Password"  placeholder="Şifrenizi Giriniz" required>
                        </div>
                         <div class="col-md-12 ">
                            <input type="password" class="form-control" asp-for="@Model.RePassword"  placeholder="Şifrenizi Yeniden Giriniz" required>
                        </div>
                        <div class="col-md-12">
                            <input type="text" class="form-control" asp-for="@Model.Phone"   placeholder="Telefon Giriniz" required>
                        </div>
                        <div class="col-md-12">
                           <label>  <b>Profil Resminiz</b></label>
                            <input type="file" asp-for="@Model.ProfileImage">
                        </div>
                        <div class="col-md-12 text-center">
                            <button type="submit">Üye OL</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
</section>


UserController'a SignUp  post action ekleyelim:


 public IActionResult SignUp()
        {
            if (TempData["Message"] != null)
            {
                ViewBag.CssClassName = TempData["CssClassName"];
                ViewBag.Message = TempData["Message"];
            }
            return View(new User());
        }
        [HttpPost]
        public IActionResult SignUp(User user)
        {

            //Yeni eklenen kullanıcının rolu modelden otomatik pompaci olarak kaydedilir. Sonrasında admin rol değişikliği yapabilir..
            if (user.Password == user.RePassword)
            {   user.Password = BCrypt.Net.BCrypt.HashPassword(user.Password);
                _repoUser.Add(user);
                TempData["CssClassName"] = "success";
                TempData["Message"] = "Başarıyla üye oldunuz, Lütfen Giriş yapınız..";
                return RedirectToAction("SignIn", "User");
            }
            else 
            {
                ViewBag.CssClassName = "danger"; ;
                ViewBag.Message = "Şifreler Birbiri ile uyumsuz, Lütfen Yeniden Deneyiniz..";
                return View();
            }  
        }

Uyarıların çıkmaıs için Layout sayfasına Render Body üstüne;


        <div class="row">
            <div class="col-md-4"></div>
            <div class="col-md-5">
            @if (@ViewBag.Message != null)
            {
                <div class="alert alert-@ViewBag.CssClassName alert-dismissible fade show" role="alert" >
                    @ViewBag.Message
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
            }
            </div>
            <div class="col-md-3"></div>
        </div>

 Layout Sayfanın aşağısına ise js komutunu yazalım:

    <script type="text/javascript">
        $(document).ready(function () {
            window.setTimeout(function () {
                $(".alert").fadeTo(1500, 0).slideUp(500, function () {
                    $(this).remove();
                });
            }, 2000);
        });
    </script>


Şimdi üye olmayı deneyelim, Resim eklemeyelim, çünkü resmi bir sonraki yazıda Cloudinary kısmına ekleyeceğiz..



Kullanıcı Sql Servera eklenmiş mi kontrol eddelim..



Bir sonraki yazıda Cloudinary ile Profil resmini kaydedeceğiz..


Hiç yorum yok: