Пример #1
0
        public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            string mdpCrypte = Cryptage.getMd5Hash(model.Password);

            using (Data db = new Data())
            {
                var utilisateur = (from u in db.Users where (u.Email == model.Account || u.UserName == model.Account) && u.Password == mdpCrypte select u).FirstOrDefault();

                if (utilisateur != null)
                {
                    var claims = new List<Claim>
                    {
                        new Claim(ClaimTypes.Sid, utilisateur.ID.ToString()),
                        new Claim(ClaimTypes.Name, utilisateur.UserName),
                        new Claim(ClaimTypes.Email, utilisateur.Email),
                        new Claim(ClaimTypes.NameIdentifier, Guid.NewGuid().ToString() + utilisateur.ID.ToString())
                    };

                    var identity = new ClaimsIdentity(claims, "ApplicationCookie", ClaimTypes.Name, ClaimTypes.Role);
                    var owinContext = HttpContext.GetOwinContext();
                    owinContext.Authentication.SignIn(identity);

                    return RedirectToAction(returnUrl);
                }

                ModelState.AddModelError("", "Tentative de connexion non valide.");
                return View(model);
            }
        }
Пример #2
0
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            // L'utilisateur doit avoir confirmé le mail
            var utilisateur = await UserManager.FindByNameAsync(model.Email);
            if (utilisateur != null)
            {
                if (!await UserManager.IsEmailConfirmedAsync(utilisateur.Id))
                {
                    string callbackUrl = await SendEmailConfirmationTokenAsync(utilisateur.Id, "Confirmez vote demande de renvoi du courriel de confirmation");

                    ViewBag.errorMessage = "Vous devez valider le mail de confirmation avant de pouvoir vous connecter.";
                    return View("Error");
                }
            }

            // Ceci ne comptabilise pas les échecs de connexion pour le verrouillage du compte
            // Pour que les échecs de mot de passe déclenchent le verrouillage du compte, utilisez 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, RememberMe = model.RememberMe });
                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Tentative de connexion non valide.");
                    return View(model);
            }
        }