private StatutConnection ValidateUser(string login, string password) { StatutConnection state = new StatutConnection(); state.Connected = false; state.isLigue = false; var ctx = new GestionOFEntities(); var pass = encrypt(password); state.Connected = ctx.Admin.Where(a => a.login == login && a.password == pass).Count() == 1; if (!state.Connected) { state.Connected = ctx.Responsable.Where(a => a.Licence == login && a.Password == pass).Count() == 1; } if (!state.Connected) { state.Connected = ctx.Ligues.Where(a => a.login == login && a.password == pass).Count() == 1; state.isLigue = true; } return(state); }
public ActionResult Login(Models.LoginViewModel model, string returnUrl) { ViewBag.ReturnUrl = returnUrl; if (!ModelState.IsValid) { return(View(model)); } //On regarde dans la fonction Validate pour donner la connexion à statut ainsi que admin ou ligue StatutConnection state = ValidateUser(model.Login, model.Password); if (!state.Connected) { ModelState.AddModelError(string.Empty, "Le nom d'utilisateur ou le mot de passe est incorrect."); return(View(model)); } // L'authentification est réussie, // injecter les informations utilisateur dans le cookie d'authentification : var userClaims = new List <Claim>(); // Identifiant utilisateur : userClaims.Add(new Claim(ClaimTypes.NameIdentifier, model.Login)); // Rôles utilisateur : if (model.Login == "admin") { userClaims.AddRange(LoadRolesAdmin(model.Login)); } else { if (state.isLigue) { userClaims.AddRange(LoadRolesAccesLigue(model.Login)); } else { userClaims.AddRange(LoadRolesResponsable(model.Login)); } } var claimsIdentity = new ClaimsIdentity(userClaims, DefaultAuthenticationTypes.ApplicationCookie); var ctx = Request.GetOwinContext(); var authenticationManager = ctx.Authentication; authenticationManager.SignIn(claimsIdentity); if (model.Login == "admin") { return(RedirectToAction("HomeAdmin", "Admin")); } else { if (state.isLigue) { return(RedirectToAction("Home", "AccesLigue")); } else { return(RedirectToAction("Home", "AccesResponsable")); } } }