Exemple #1
0
        public ActionResult Login()
        {
            ViewBag.Message = "Your login page.";
            RegisterLoginViewModel rm = new RegisterLoginViewModel();

            return(View(rm));
        }
        public async Task <ActionResult> Login(RegisterLoginViewModel model, string returnUrl, bool?admin)
        {
            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            if (admin == true)
            {
                model.Email      = "*****@*****.**";
                model.Password   = "******";
                model.RememberMe = false;
            }

            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                var user = db.Users.FirstOrDefault(u => u.Email == model.Email);
                return(RedirectToAction("Household", "Home", new { Id = user.HouseholdId }));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
Exemple #3
0
 public ActionResult Login(LoginModel lm)
 {
     if (ModelState.IsValid)
     {
         //UnitOfWork ctx = new UnitOfWork(ConfigurationManager.ConnectionStrings["Cnstr"].ConnectionString);
         UserModel um = ctx.UserAuth(lm);
         if (um == null)
         {
             ViewBag.Error = "Erreur Login/Password";
             RegisterLoginViewModel rm = new RegisterLoginViewModel();
             return(View(rm));
         }
         else
         {
             SessionUtils.IsLogged      = true;
             SessionUtils.ConnectedUser = um;
             return(RedirectToAction("Profile", "Home", new { area = "Member" }));
         }
     }
     else
     {
         RegisterLoginViewModel rm = new RegisterLoginViewModel();
         return(View(rm));
     }
 }
        public async Task <ActionResult> InviteRegister(RegisterLoginViewModel model, string Id)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = new ApplicationUser {
                UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName,
                Gender   = model.Gender, DisplayName = model.FirstName + " " + model.LastName
            };
            var result = await UserManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                db.Households.FirstOrDefault(h => h.HouseId == Id).Users.Add(user);
                db.SaveChanges();
                await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                // Send an email with this link

                return(RedirectToAction("Index", "Home"));
            }
            AddErrors(result);
            return(View(model));
        }
        public async Task <ActionResult> Login(RegisterLoginViewModel model, string returnUrl, string strpage = "_login")
        {
            //время блокировки
            //UserManager.DefaultAccountLockoutTimeSpan = TimeSpan.FromHours(1);
            //количество попыток, если 5, то на пятую "неправильную" блокирует
            //UserManager.MaxFailedAccessAttemptsBeforeLockout = 2;
            // This doen't count login failures towards lockout only two factor authentication
            //shouldLockout: true Чтобы заблокировать пользователя
            //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            //switch (result)
            //{
            //    case SignInStatus.Success:
            //        return RedirectToLocal(returnUrl);
            //    case SignInStatus.LockedOut:
            //        return View("Lockout");
            //    case SignInStatus.RequiresVerification:
            //        return RedirectToAction("SendCode", new { ReturnUrl = returnUrl });
            //    case SignInStatus.Failure:
            //    default:
            //        ModelState.AddModelError("", "Неверное имя пользователя или пароль.");
            //        return View(model);
            //}
            if (ModelState.IsValid)
            {
                var user = await UserManager.FindAsync(model.LogModel.Email, model.LogModel.Password);

                if (user != null)
                {
                    if (user.EmailConfirmed == true)
                    {
                        //await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: true);
                        var result = await SignInManager.PasswordSignInAsync(model.LogModel.Email, model.LogModel.Password, model.LogModel.RememberMe, shouldLockout : false);

                        //return RedirectToLocal(returnUrl);
                        return(Redirect("/Home/Index"));
                        //return JavaScript("window.location='/Home/Index'");
                        //return JavaScript("location.reload(true)");
                    }
                    else
                    {
                        ModelState.AddModelError("", "Не подтвержден email.");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Неверный логин или пароль");
                }
            }
            if (Request.IsAjaxRequest())
            {
                return(PartialView(strpage, model));
            }
            return(JavaScript("window.location='/Home/Index'"));
        }
        public async Task <ActionResult> Login(RegisterLoginViewModel model)

        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View("Index", model));
                }

                var userManager = NewUserManager();
                var user        = await userManager.FindAsync(model.LoginViewModel.UserName, model.LoginViewModel.Password);

                if (user == null)
                {
                    ModelState.AddModelError("", "Kullanıcı adı veya şifre hatalı");
                    return(View("Index", model));
                }
                var authManager  = HttpContext.GetOwinContext().Authentication;
                var userIdentity = await userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

                authManager.SignIn(new AuthenticationProperties()
                {
                    IsPersistent = model.LoginViewModel.RememberMe
                }, userIdentity);

                return(RedirectToAction("Index", "Account"));
                //if (HttpContext.GetOwinContext().Authentication.User.IsInRole("Admin"))
                //    return RedirectToAction("Index", "Admin");
                //else if (HttpContext.GetOwinContext().Authentication.User.IsInRole("Operator"))
                //    return RedirectToAction("Index", "Operator");
                //else if (HttpContext.GetOwinContext().Authentication.User.IsInRole("Technician"))
                //    return RedirectToAction("Index", "Technician");
                //else if (HttpContext.GetOwinContext().Authentication.User.IsInRole("Customer"))
                //    return RedirectToAction("Index", "Customer");
                //else
                //    return RedirectToAction("Index", "Home");
            }
            catch (Exception ex)
            {
                TempData["Model"] = new ErrorViewModel()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "Index",
                    ControllerName = "Account",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error", "Home"));
            }
        }
Exemple #7
0
        public ActionResult Register(UserModel user, HttpPostedFileBase FilePicture)
        {
            if (ModelState.IsValid)
            {
                //1- vérifier que la photo à une taille supérieure à 0 et pas trop lourde <200Mo
                if (FilePicture.ContentLength > 0 && FilePicture.ContentLength < 20000)
                {
                    //2 Vérifier le type
                    string extension = Path.GetExtension(FilePicture.FileName);
                    if (valideImageType.Contains(extension))
                    {
                        //3 vérifier si le dossier de destination existe
                        string destFolder = Path.Combine(Server.MapPath("~/img/dancers"));
                        if (!Directory.Exists(destFolder))
                        {
                            //string destFolderDancer = Path.Combine(Server.MapPath("~/img/dancers"), SessionUtils.ConnectedUser.IdUser.ToString());
                            Directory.CreateDirectory(Path.Combine(Server.MapPath("~/img/dancers"), SessionUtils.ConnectedUser.IdUser.ToString()));
                        }
                        //4 - Upload de l'image
                        FilePicture.SaveAs(Path.Combine(destFolder, FilePicture.FileName));
                        //5 Mise à jour de l'objet User
                        user.Image = FilePicture.FileName;
                    }
                }

                //UnitOfWork ctx = new UnitOfWork(ConfigurationManager.ConnectionStrings["Cnstr"].ConnectionString);
                if (ctx.SaveUser(user))
                {
                    ViewBag.SuccessMessage = "You have been registered";
                    return(RedirectToAction("Login", "Home"));
                }
                else
                {
                    ViewBag.ErrorMessage = "You have not been registered yet, try again";
                    RegisterLoginViewModel rm = new RegisterLoginViewModel();
                    return(View(rm));
                }
            }
            else
            {
                ViewBag.ErrorMessage = "Formulaire error";
                RegisterLoginViewModel rm = new RegisterLoginViewModel();
                return(View(rm));
            }
        }
Exemple #8
0
        public async Task <ActionResult> Login(RegisterLoginViewModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View("Index", model));
                }


                var userManager = NewUserManager();

                var user = await userManager.FindAsync(model.LoginViewModel.UserName, model.LoginViewModel.Password);

                if (user == null)
                {
                    ModelState.AddModelError("", "Kullanıcı adı veya şifre hatalı");
                    return(View("Index", model));
                }

                var authManager  = HttpContext.GetOwinContext().Authentication;
                var userIdentity =                      //applicationcookie dışında . ya basınca gelen 3-4 tane yapı var farklı farklı hoca bahsetti yinede bak.
                                   await userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

                authManager.SignIn(new AuthenticationProperties()
                {
                    IsPersistent = model.LoginViewModel.RememberMe,
                }, userIdentity);
                return(RedirectToAction("Index", "Home"));
            }
            catch (Exception ex)
            {
                TempData["Model"] = new ErrorViewModel()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "Index",
                    ControllerName = "Account",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error", "Home"));
            }
        }
Exemple #9
0
        //Kayıt olan kullanıcyla giriş işlemi.
        public async Task <ActionResult> Login(RegisterLoginViewModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View("Index", model));
                }
                var userManager = NewUserManager();                                      //Role işleri için usermanager kullanılır.
                var lm          = model.LoginViewModel;
                var user        = await userManager.FindAsync(lm.UserName, lm.Password); //Login için kullanıcı adı ve şifreye bakıyor.

                //Kullanıcı adı ve şifre alınmamıssa buraya giriyor.
                if (user == null)
                {
                    ModelState.AddModelError("", "Kullanıcı Adı veya şifre hatalı");
                    return(View("Index", model));
                }
                //Kimlik doğrulama için Auhhetication Manager a ihtiyacım var.İçinde signin signout var .
                var authManager  = HttpContext.GetOwinContext().Authentication;
                var userIdentity =//Kopyala yapıştır.ApplicationCookie uygulama içi çerezler.
                                   await userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

                authManager.SignIn(new AuthenticationProperties()
                {
                    IsPersistent = model.LoginViewModel.RememberMe
                }, userIdentity);
                return(RedirectToAction("Index", "Home"));
            }
            catch (Exception ex)
            {
                TempData["Model"] = new ErrorViewModel()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "Index",
                    ControllerName = "Account",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error", "Home"));
            }
        }
Exemple #10
0
        public async Task <ActionResult> Login(RegisterLoginViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", model));
            }

            try
            {
                var userManager = NewUserManager();
                var user        = await userManager.FindAsync(model.LoginViewModel.UserName, model.LoginViewModel.Password);

                if (user == null)
                {
                    ModelState.AddModelError("", "Kullanıcı adı veya şifre hatalı şifre girişi yaptınız !");
                    return(View("Index", model));
                }
                var authManager = HttpContext.GetOwinContext().Authentication;

                var userIdendity = await userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

                authManager.SignIn(new Microsoft.Owin.Security.AuthenticationProperties()
                {
                    IsPersistent = model.LoginViewModel.RememberMe
                }, userIdendity);

                return(RedirectToAction("Index", "Home"));
            }
            catch (Exception)
            {
                TempData["Model"] = new ErrorViewModel()
                {
                    Text           = $"Giriş Sırasında Bir Hata Oluştu",
                    ActionName     = "Index",
                    ControllerName = "Account",
                    ErrorCode      = 404
                };
                return(RedirectToAction("Error", "Home"));
            }
        }
Exemple #11
0
        // Login işlemleri
        public async Task <ActionResult> Login(RegisterLoginViewModel model)
        {
            try
            {
                if (!ModelState.IsValid) // Viewdan gelen modelim isvalid değilse yine Index ekranına girdiğimiz verilerle donduruluyoruz.
                {
                    return(View("Index", model));
                }
                // User ile ilgili işlemler yapacagımız için burada da yine usermanager tanımladık.
                var userManager = NewUserManager();
                // Giriş için kullanıcının kayıtlı olup olmadıgını kontrol etmemiz gerekiyor.
                var user = await userManager.FindAsync(model.LoginViewModel.UserName, model.LoginViewModel.Password); // Gelen modele göre kullanıcıyı bulmaya çalışacak

                if (user == null)                                                                                     //Eger kullanıcı veya şifre hatalıysa null gelecek. Null gelirse de:
                {
                    ModelState.AddModelError("", "Kullanıcı adı veya şifre hatalı");
                    return(View("Index", model));
                }
                // Bulduğumuz login ile giriş yapabilmemiz için bir tane Authentication manager a ihtiyacımız var. Aşagıdaki kod bize bu konuda yardımcı oluyor.Bu methodun içinde signin ve signout metodları var.Onları kullanacagız.
                var authManager = HttpContext.GetOwinContext().Authentication;
                // SignIn bizden Identity istiyor. Bunun için bir userIdentity oluşturuyoruz.
                // SignIn bizden Identity istiyor. Bunun için bir userIdentity oluşturuyoruz.
                var userIdentity = await userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

                authManager.SignIn(new AuthenticationProperties()
                {
                    // Once bizden bir ayar istiyor parametre olarak,sonra da identity i
                    IsPersistent = model.LoginViewModel.RememberMe // True olursa beni hatırla özelliğini sectiğimizde siteyi kapatıp açsak bile loginimizin kalmasını saglıyor. Ama biz burada true false özelliğini modelimize bağladık, oradan alacak.
                }, userIdentity);
                // Login işlemi başarılı oldugunda bizi HomeControllerında tanımlı index sayfasına gonderecek.
                return(RedirectToAction("Index", "Home"));
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task <ActionResult> Register(RegisterLoginViewModel model, string theName)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName,
                    Gender   = model.Gender, DisplayName = model.FirstName + " " + model.LastName
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    helper.CreateHousehold(user.Id, theName);
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    //await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
                    await new EmailService().SendAsync(new IdentityMessage
                    {
                        Subject     = "Wealth Health Confirm Accont",
                        Destination = user.Email,
                        Body        = "Hello, " + user.FirstName + "." + Environment.NewLine + Environment.NewLine +
                                      "You have recently signed up for an account at Wealth Health.  To verify your account, please click this link <a href=\"" + callbackUrl + "\">here</a>.  If you believe that this was a mistake, please disregard this email."
                    });
                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Exemple #13
0
        public async Task <ActionResult> Register(RegisterLoginViewModel model)
        {
            if (ModelState.IsValid)
            {
                return(View("Login", model));
            }
            try
            {
                var userManager = NewUserManager();
                var userStore   = NewUserStore();

                var rm = model.RegisterViewModel;

                var user = await userManager.FindByNameAsync(rm.Username);

                if (user != null)
                {
                    ModelState.AddModelError("Username", "Bu mail adresi sistemde kayıtlı");
                    return(View("Login", model));
                }
                var newUser = new User()
                {
                    UserName = rm.Username,
                    Name     = rm.Name,
                    Surname  = rm.Surname,
                    Email    = rm.Email
                };
                var result = await userManager.CreateAsync(newUser, rm.Password);

                if (result.Succeeded)
                {
                    if (userStore.Users.Count() == 1)
                    {
                        await userManager.AddToRoleAsync(newUser.Id, "Admin");
                    }
                    else
                    {
                        await userManager.AddToRoleAsync(newUser.Id, "User");
                    }
                    //todo kullanıcıya mail gönderilsin.
                }
                else
                {
                    var err = " ";
                    foreach (var resultError in result.Errors)
                    {
                        err += resultError + "";
                    }
                    ModelState.AddModelError("", err);
                    return(View("Index", model));
                }
                return(RedirectToAction("Login"));
            }
            catch (Exception ex)
            {
                TempData["Model"] = new ErrorViewModel()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "Index",
                    ControllerName = "Account",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error", "Home"));
            }
        }
Exemple #14
0
        public async Task <ActionResult> Register(RegisterLoginViewModel model)

        {
            if (!ModelState.IsValid)
            {
                return(View("Index", model));//ındex view ını modelle çalıştıryprum.
            }

            try
            {
                var userStore   = NewUserStore();   //veritabanı işlemi yapcağımız için Store kullanırız.
                var userManager = NewUserManager(); //yukarda static kütüphane seklinde tanımlamasaydık MembershipTools.Newusermanager yazardık.
                var roleManager = NewRoleManager();
                //registerviewmodelde propertlere tanımladığımız isim username ... leri formda doldurup rm ye atıyoruz.
                var rm   = model.RegisterViewModel;                        //Kullanıcı varmı yokmu diye bakmak için kullanıyoruz.
                var user = await userManager.FindByNameAsync(rm.UserName); //username e göre arıyor.

                if (user != null)
                {
                    ModelState.AddModelError("UserName", "Bu kullanıcı daha önce alınmıştır.");
                    return(View("Index", model));
                }
                var newUser = new User()//Kullanıcıyı değişkene atıyprum.
                {
                    UserName       = rm.UserName,
                    Email          = rm.Email,
                    Name           = rm.Name,
                    Surname        = rm.Surname,
                    ActivationCode = StringHelpers.GetCode()
                };
                //Kullanıcı oluşturuyoruz.
                var result = await userManager.CreateAsync(newUser, rm.Password); //password ü ayrı alıyor çünkü şifrelicek.

                if (result.Succeeded)                                             //İlk kullanıcıysa admin yapalım.
                {
                    if (userStore.Users.Count() == 1)
                    {
                        await userManager.AddToRoleAsync(newUser.Id, "Admin");//içine userıd ve role alır.
                    }
                    else//ilk kaydettiğimiz admin oldu sonrakiler user olarak buraya düşüyor.
                    {
                        await userManager.AddToRoleAsync(newUser.Id, "User");
                    }
                    string SiteUrl = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host +
                                     (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port);

                    var emailService = new EMailService();
                    var body         = $"Merhaba <b>{newUser.Name} {newUser.Surname}</b><br>Hesabınızı aktif etmek için aşadıdaki linke tıklayınız<br> <a href='{SiteUrl}/account/activation?code={newUser.ActivationCode}' >Aktivasyon Linki </a> ";
                    await emailService.SendAsync(new IdentityMessage()
                    {
                        Body = body, Subject = "Sitemize Hoşgeldiniz"
                    }, newUser.Email);                                                                                                   //mailin gitmesi için newUser.Email eklemeliyiz.
                }
                else
                {
                    var err = "";
                    foreach (var resultError in result.Errors)
                    {
                        err += resultError + " ";
                    }
                    ModelState.AddModelError("", err);
                    return(View("Index", model));
                }
                TempData["Message"] = "Kaydınız basarıyla alınmıştır";
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                TempData["Model"] = new ErrorViewModel()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "Index",
                    ControllerName = "Account",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error", "Home"));
            }
        }
Exemple #15
0
        public async Task <ActionResult> Register(RegisterLoginViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", model));
            }

            try
            {
                var userStore   = NewUserStore();
                var userManager = NewUserManager();
                var roleManager = NewRoleManager();

                var rm = model.RegisterViewModel;

                var user = await userManager.FindByNameAsync(rm.UserName);

                if (user != null)
                {
                    ModelState.AddModelError("UserName", "Bu kullanıcı adı daha önceden alınmış !");
                    //return View("Index", model);
                    TempData["Model"] = new ErrorViewModel()
                    {
                        Text           = $"Bu kullanıcı adı daha önce alınmıştır !",
                        ActionName     = "Index",
                        ControllerName = "Account",
                        ErrorCode      = 404
                    };
                    return(RedirectToAction("Error", "Home"));
                }
                var YeniKullanici = new User()
                {
                    UserName       = rm.UserName,
                    Email          = rm.Email,
                    Ad             = rm.Ad,
                    Soyad          = rm.Soyad,
                    ActivationCode = StringHelpers.GetCode()
                };

                var result = await userManager.CreateAsync(YeniKullanici, rm.Password);

                if (result.Succeeded)
                {
                    if (userStore.Users.Count() == 1)
                    {
                        await userManager.AddToRoleAsync(YeniKullanici.Id, "Admin");
                    }
                    else
                    {
                        await userManager.AddToRoleAsync(YeniKullanici.Id, "Musteri");
                    }

                    string SiteUrl = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host +
                                     (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port);

                    var emailService = new EmailService();
                    var body         = $"Merhaba <b>{YeniKullanici.Ad} {YeniKullanici.Soyad}</b><br>Hesabınızı onaylamak yada aktif etmek için aşağıdaki linke tıklayınız !<br> <a href='{SiteUrl}/account/activation?code={YeniKullanici.ActivationCode}'> Hesabınızı aktifleştimek için tıklayınız !</a> ";
                    await emailService.SendAsync(new IdentityMessage()
                    {
                        Body = body, Subject = "Aktivasyon Kodu"
                    }, YeniKullanici.Email);
                }
                else
                {
                    var err = "";
                    foreach (var ResultErrors in result.Errors)
                    {
                        err = err + ResultErrors + " ";
                    }

                    ModelState.AddModelError("", err);
                    return(View("Index", model));
                }

                TempData["Message"] = "Kaydınız tamamlanmıştır. Üyelik bilgilerinizle giriş yapabilirsiniz.";
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                TempData["Model"] = new ErrorViewModel()
                {
                    Text           = $"Kayıt Sırasında Bir Hata Oluştu",
                    ActionName     = "Index",
                    ControllerName = "Account",
                    ErrorCode      = 404
                };
                return(RedirectToAction("Error", "Home"));
            }
        }
Exemple #16
0
        // Kayıt bilgilerinin gönderilmesi için post kullandık.
        // RegisterLoginViewModel kullanmamızın sebebi de indexte o model tipini kullanıyor olmamız. Verilerin girilmesi ile birlikte bize Indexten bir model gelecek
        public async Task <ActionResult> Register(RegisterLoginViewModel model)
        {
            if (!ModelState.IsValid) // Eger Indexten gelen ve gonderilecek olan modelimiz  Isvalid değilse o zaman ındex viewdan gelen modeli oldugu gibi ındex e geri gönderiyoruz.
            {
                return(View("Index", model));
            }
            try
            {
                // User ile ilgili işlemler yapacaksak bize UserManeger gerekecek. Onun için tanımlama yapıyoruz.
                var userManager = NewUserManager();
                // Veritabanı işlemi yapabilirz diye de store tanımlaması yaptık
                var userStore = NewUserStore();
                // Önce kullanıcının olup olmadıgının kontrolunu yapıyoruz.
                // model.RegisterViewModel.UserName e göre kullanıcılarımız arasında arama yani kontrol yapmalı.
                var rm   = model.RegisterViewModel;                                                    // Çok uzun olmasın diye burada bir bölme işlemi yaptık.
                var user = await userManager.FindByNameAsync(rm.UserName);                             // UserManager ile bu modelin olup olmadıgını kontrol edecek

                if (user != null)                                                                      // Eger null degilse böyle bir kullanıcı var demektir. Bunun için modelstate imizin içerisine username için bir hata mesajı yazdık.
                {
                    ModelState.AddModelError("UserName", "Bu kullanıcı adı daha önceden alınmıştır."); // Hata mesajımız
                    return(View("Index", model));                                                      // Ve index viewına modelimizi geri donduruyoruz. Yani yine aynı sayfa yazdığımız verilerle beraber geliyor.
                }
                // Tüm aşamaları geçip buraya geldiğinde yeni bir user oluşturuyoruz.
                var newUser = new User()
                {
                    UserName       = rm.UserName,
                    Email          = rm.Email,
                    Name           = rm.Name,
                    Surname        = rm.Surname,
                    ActivationCode = StringHelpers.GetCode()                      // Her yeni bir kullanıcı oluştuğunda activasyon kodu da oluşsun
                };
                var result = await userManager.CreateAsync(newUser, rm.Password); // Password u ayrı istiyor çükü onu şifreleyecek

                if (result.Succeeded)                                             // Eger kayıt başarılı ise admin mi yoksa user mı olacagına karar vermeliyiz. Eger ilk kullanıcı ise onu admin yapar, diğer kulanıcılar için de user role unu verebiliriz. Bunun için ilk kullanıcı olup olmadıgının kontrolunu yapacagız.
                {
                    if (userStore.Users.Count() == 1)                             // 1 e eşit olursa bu ilk ve tek kayıt oldugunu gösterir. Yani ilk kayıt oldugu için bunu admin yapabiliriz.
                    {
                        await userManager.AddToRoleAsync(newUser.Id, "Admin");    // Bu user ı Admin olarak eklemiş olduk.
                    }
                    else                                                          // Şart saglanmıyorsa da bu kullanıcıyı user olarak ekleyecek.
                    {
                        await userManager.AddToRoleAsync(newUser.Id, "User");
                    }
                    // ***Mail gonderme işlemi
                    string SiteUrl = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host +
                                     (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port);                                                                                                                                            // Farklı pc lerden çalıştırma sonucu doğacak url hatalarını önlüyor. Url yonetimini saglıyor. Sitenin çalıştığı mevcut yapıyı veriyor.

                    var emailService = new EmailService();                                                                                                                                                                                 // Kendi oluşturdugumuz maili kullanacagız o maili de boş constructora yazdıgımız için bunu çağırdık. Eger dışarıdan vermek isteseydık o zaman parametreli constructorı newleyecektik.
                    // EmailService içindeki hiçbir propertyi kullanmayacagımız için burada onları çağırmadık, sadece send metodunu çağırdık.
                    var body = $"Merhaba <b>{newUser.Name} {newUser.Surname}</b><br>Hesabınızı aktif etmek için aşağıdaki linke tıklayınız.<br><a href='{SiteUrl}/account/activation?code={newUser.ActivationCode}'>Aktivasyon Linki</a>"; // body içerisine mesajı ve linki yazdık
                    await emailService.SendAsync(new IdentityMessage()
                    {
                        Body    = body,
                        Subject = "Sitemize Hoşgeldiniz",
                    }, newUser.Email);   // EmailService parametrelerini buradan gonderdik.
                }
                else // Eger kayıt başarılı değilse donecek hata mesajları
                {
                    var err = "";
                    foreach (var resultError in result.Errors)
                    {
                        err += resultError + " ";                               // Her bir hatayı err ye ekliyor ve hata oldugunda en son o gösterilecek.
                    }
                    ModelState.AddModelError("", err);                          // Hata mesajımız
                    return(View("Index", model));                               // Ve tekrar aynı sayfa yazdığımız verilerle beraber gelecek.
                }
                TempData["Mesaj"] = "Kaydınız alınmıştır.Lütfen giriş yapınız"; // View kısmına bu mesajın görülmesini istediğimiz yere bunu yazıyoruz.
                return(RedirectToAction("Index"));                              // En son olrakta Index sayfasını dondur.
            }
            catch (Exception ex)
            {
                // Burayı hata classını yazınca doldur.Video3 16:57
                throw;
            }
        }
Exemple #17
0
        public async Task <ActionResult> Register(RegisterLoginViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", model));
            }
            try
            {
                var userStore   = NewUserStore();
                var userManager = NewUserManager();

                var rm = model.RegisterViewModel;

                var user = await userManager.FindByNameAsync(rm.UserName);

                if (user != null)
                {
                    ModelState.AddModelError("UserName", "Bu kullanıcı adı daha önceden alınmıştır");
                    return(View("Index", model));
                }

                var newUser = new User()
                {
                    UserName       = rm.UserName,
                    Email          = rm.Email,
                    Name           = rm.Name,
                    Surname        = rm.Surname,
                    ActivationCode = StringHelpers.GetCode()
                };
                var result = await userManager.CreateAsync(newUser, rm.Password);

                if (result.Succeeded)
                {
                    if (userStore.Users.Count() == 1)
                    {
                        await userManager.AddToRoleAsync(newUser.Id, "Admin");
                    }
                    else
                    {
                        await userManager.AddToRoleAsync(newUser.Id, "User");
                    }

                    string SiteUrl = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host +
                                     (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port);

                    var emailService = new EmailService();
                    var body         = $"Merhaba <b>{newUser.Name} {newUser.Surname}</b><br>Hesabınızı aktif etmek için aşadıdaki linke tıklayınız<br> <a href='{SiteUrl}/account/activation?code={newUser.ActivationCode}' >Aktivasyon Linki </a> ";
                    await emailService.SendAsync(new IdentityMessage()
                    {
                        Body = body, Subject = "Sitemize Hoşgeldiniz"
                    }, newUser.Email);
                }
                else
                {
                    var err = "";
                    foreach (var resultError in result.Errors)
                    {
                        err += resultError + " ";
                    }
                    ModelState.AddModelError("", err);
                    return(View("Index", model));
                }

                TempData["Message"] = "Kaydınız alınlıştır. Lütfen giriş yapınız";
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                TempData["Model"] = new ErrorViewModel()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "Index",
                    ControllerName = "Account",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error", "Home"));
            }
        }