コード例 #1
0
        public ActionResult ChangePassword(Utilisateurs utilisateurs)
        {
            if (utilisateurs.MotDePasse != null && !CryptUtils.IsValidMotDePasse(utilisateurs.MotDePasse))
            {
                ModelState.AddModelError("MotDePasse", "Le mot de passe doit contenir au moins une majuscule, une minuscule, un chiffre et un caractère spécial");
            }

            if (ModelState.IsValid)
            {
                var user = Db.Utilisateurs.Find(utilisateurs.Id);

                if (user != null)
                {
                    user.MotDePasse      = CryptUtils.GenerateHashPassword(utilisateurs.MotDePasse);
                    Db.Entry(user).State = EntityState.Modified;
                    Db.SaveChanges();
                }
                else
                {
                    ModelState.AddModelError("MotDePasse", "Cet utilisateur est introuvable");
                }

                return(RedirectToAction("Index"));
            }
            return(View(utilisateurs));
        }
コード例 #2
0
        public async Task <ActionResult> Create(Utilisateurs utilisateurs)
        {
            if (Db.Utilisateurs.Count(x => x.Email == utilisateurs.Email && x.Etat == EtatEnum.ACTIF) > 0)
            {
                ModelState.AddModelError("Email", "Cette adresse est déjà présente!");
            }

            if (ModelState.IsValid)
            {
                Utilisateurs user;
                var          isAjout = false;
                //si l'adresse existe en base c'est que c'est un utilisateur périmé, donc on le réactive
                if (Db.Utilisateurs.Count(x => x.Email == utilisateurs.Email) > 0)
                {
                    user = Db.Utilisateurs.First(x => x.Email == utilisateurs.Email);
                }
                else
                {
                    user    = Db.Utilisateurs.Create();
                    isAjout = true;
                }

                var motDePasse = CryptUtils.GeneratePassword(9, true, true, true);
                user.MotDePasse = CryptUtils.GenerateHashPassword(motDePasse);
                user.Email      = utilisateurs.Email.ToLower();
                user.Nom        = StringUtils.FirstLetterUpper(utilisateurs.Nom.ToLower());
                user.Prenom     = StringUtils.FirstLetterUpper(utilisateurs.Prenom.ToLower());
                user.Nid        = utilisateurs.Nid;
                user.Pnia       = utilisateurs.Pnia;
                user.Role       = utilisateurs.Role;
                user.GradesId   = utilisateurs.GradesId;
                user.PolesId    = utilisateurs.PolesId;
                user.Etat       = EtatEnum.ACTIF;

                if (isAjout)
                {
                    Db.Entry(user).State = EntityState.Added;
                    Db.Utilisateurs.Add(user);
                }
                else
                {
                    Db.Entry(user).State = EntityState.Modified;
                }
                Db.SaveChanges();

                //envoi du mail
                var mail         = Db.Mails.First(x => x.NomUnique == ContexteStatic.EnvoiCreationCompte);
                var corpsMessage = StringUtils.CopyString(mail.Corps);
                corpsMessage = corpsMessage.Replace("%NOMAPPLI%", ContexteApplication.Application.NomAppli);
                corpsMessage = corpsMessage.Replace("%LOGIN%", user.Email);
                corpsMessage = corpsMessage.Replace("%MOTDEPASSE%", motDePasse);
                await MailUtils.SendMail(user.Email, mail.Objet, corpsMessage);

                return(RedirectToAction("Index"));
            }

            ViewBag.GradesId = new SelectList(Db.Grades.Where(x => x.Etat == EtatEnum.ACTIF && x.ArmesId == utilisateurs.ArmesId).ToList(), "Id", "Nom");
            ViewBag.ArmesId  = new SelectList(Db.Armes.Where(x => x.Etat == EtatEnum.ACTIF).ToList(), "Id", "Nom");
            ViewBag.PolesId  = new SelectList(Db.Poles.Where(x => x.Etat == EtatEnum.ACTIF).ToList(), "Id", "Nom");
            return(View(utilisateurs));
        }
コード例 #3
0
        public ActionResult ChangePasswordPerso(Utilisateurs utilisateurs)
        {
            if (ModelState.IsValidField("MotDePasse"))
            {
                string mdpA = Request.Form["mdpA"];
                string mdpB = Request.Form["mdpB"];

                var id = GetIdUtilisateurConnecte();

                if (id != -1)
                {
                    var user = Db.Utilisateurs.First(x => x.Id == id);

                    //controle de l'ancien mot de passe
                    var error = false;

                    if (string.IsNullOrWhiteSpace(mdpA))
                    {
                        ModelState.AddModelError("mdpA", "Ce champs est vide");
                        error = true;
                    }

                    if (string.IsNullOrWhiteSpace(mdpB))
                    {
                        ModelState.AddModelError("mdpB", "Ce champs est vide");
                        error = true;
                    }

                    if (!error)
                    {
                        if (user.MotDePasse != CryptUtils.GenerateHashPassword(utilisateurs.MotDePasse))
                        {
                            ModelState.AddModelError("MotDePasse", "L'ancien mot de passe ne correspond pas");
                            error = true;
                        }

                        if (!CryptUtils.IsValidMotDePasse(mdpA))
                        {
                            ModelState.AddModelError("mdpA", "Le mot de passe doit contenir au moins une majuscule, une minuscule, un chiffre et un caractère spécial");
                            error = true;
                        }

                        if (mdpA != mdpB)
                        {
                            ModelState.AddModelError("mdpB", "Les mots de passe ne correspondent pas");
                            error = true;
                        }
                        else
                        {
                            if (mdpA.Length < 8)
                            {
                                ModelState.AddModelError("mdpB", "Le mot de passe doit faire au moins 8 caractères");
                                error = true;
                            }
                            else
                            {
                                if (mdpA == utilisateurs.MotDePasse)
                                {
                                    ModelState.AddModelError("mdpA", "Le mot de passe est identique à l'ancien");
                                    error = true;
                                }
                            }
                        }

                        if (!error)
                        {
                            user.MotDePasse      = CryptUtils.GenerateHashPassword(mdpA);
                            Db.Entry(user).State = EntityState.Modified;
                            Db.SaveChanges();
                            return(RedirectToAction("ChangeInfoPerso"));
                        }
                    }
                }
            }
            return(View(utilisateurs));
        }
コード例 #4
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));
        }