예제 #1
0
        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);
        }
예제 #2
0
        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"));
                }
            }
        }