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); } }
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); } }