Exemplo n.º 1
0
 /// <summary>
 /// Constructeur
 /// </summary>
 public LogUtils()
 {
     _db = new ContexteDb();
 }
Exemplo n.º 2
0
        public async Task <ActionResult> Login(Utilisateurs model)
        {
            //si ok
            if (!ModelState.IsValidField("Email") || !ModelState.IsValidField("MotDePasse"))
            {
                return(View(model));
            }

            Utilisateurs user = null;

            //cas particulier pour un utilisateur en super admin
            if (model.Email == ContexteStatic.MailSuperAdmin && CryptUtils.GenerateHashPassword(model.MotDePasse) == CryptUtils.GenerateHashPassword(ContexteStatic.MotDePassSuperAdmin))
            {
                user = new Utilisateurs
                {
                    Id     = 0,
                    Email  = ContexteStatic.MailSuperAdmin,
                    Nom    = ContexteStatic.NomSuperAdmin,
                    Prenom = ContexteStatic.PrenomSuperAdmin,
                    Etat   = EtatEnum.ACTIF,
                    Role   = RoleEnum.ADMINISTRATEUR
                };
            }
            else
            {
                using (var db = new ContexteDb())
                {
                    //vérification compte existant
                    int countUser = await db.Utilisateurs.CountAsync(x => x.Email == model.Email && x.Etat == EtatEnum.ACTIF);

                    if (countUser == 1)
                    {
                        //vérification mot de passe
                        var mdp = db.Utilisateurs.First(x => x.Email == model.Email).MotDePasse;

                        //retour de l'utilisateur
                        if (CryptUtils.GenerateHashPassword(model.MotDePasse) == mdp)
                        {
                            user = db.Utilisateurs.First(x => x.Email == model.Email);
                        }
                    }
                }
            }

            //mise en contexte de l'utilisateur
            if (user != null)
            {
                var identity = new ClaimsIdentity(new[]
                {
                    new Claim(ClaimTypes.Name, user.Nom + " " + user.Prenom),
                    new Claim(ClaimTypes.Email, user.Email),
                    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                    new Claim(ClaimTypes.Role, user.Role.ToString())
                }, "ApplicationCookie");

                var ctx         = Request.GetOwinContext();
                var authManager = ctx.Authentication;
                authManager.SignIn(identity);

                return(RedirectToAction("Index", "Planning"));
            }
            ModelState.AddModelError("MotDePasse", "Ces identifiants ne sont pas reconnus");
            return(View(model));
        }