public IActionResult ChangePasswordPost(string mail) { ViewBag.NbrePagesVues = GetPageVues(); ViewBag.NbreVisitUnique = GetVisitIP(); List <string> errors = new List <string>(); if (mail == null) { errors.Add("Merci de saisir une adresse mail."); ViewBag.errors = errors; return(View("ForgotPassword")); } Membres m = new Membres { Mail = mail }; if ((!m.VerifMailExist())) { errors.Add("Il n'y a pas d'utilisateur avec cette adresse mail."); ViewBag.errors = errors; ViewBag.Mail = m.Mail; return(View("ForgotPassword")); } string NoUnique = m.GetNoUniqueMembre(); SmtpClient client = new SmtpClient { Host = PassConnection.SmtpConfig(), Port = 587, EnableSsl = true, Credentials = new NetworkCredential("*****@*****.**", PassConnection.MailPassWord()) }; MailMessage message = new MailMessage("*****@*****.**", m.Mail) { IsBodyHtml = true, Body = "Merci de confirmer votre adresse mail en cliquant sur le lien suivant: <a href = \"http://www.greys-anatomy-fans.com/Membres/ReinitializeLostPassWord/" + NoUnique + "\">Lien</a>" , Subject = "Réinitialisation du Mot de Passe" }; client.Send(message); ViewBag.Message = $"Un mail vous permettant de réinitialiser votre mot de passe a été envoyé à {m.Mail}"; return(View("ForgotPassword")); }
public IActionResult RegisterPost(string pseudo, string mail, string password, string cPassword) { ViewBag.NbreVisitUnique = GetVisitIP(); ViewBag.NbrePagesVues = GetPageVues(); ConsentCookie(ViewBag); List <string> errors = new List <string>(); string remoteIpAddress = Convert.ToString(Request.HttpContext.Connection.RemoteIpAddress); Membres m = new Membres { Pseudo = pseudo, Mail = mail, Password = password, Ip = remoteIpAddress }; if (pseudo == null) { errors.Add("Merci de saisir un pseudo!"); } if (mail == null) { errors.Add("Merci de saisir une adresse mail!"); } if (password == null) { errors.Add("Merci de saisir un mot de passe!"); } if (password != cPassword) { errors.Add("Merci de saisir le même mot de passe!"); } if (m.Pseudo != null) { if (m.VerifPseudoExist()) { errors.Add("Ce pseudo existe déja, veuillez en choisir un autre."); } } if (m.Mail != null) { if (m.VerifMailExist()) { errors.Add("Cette adresse mail est déjà enregistrée!"); } } if (errors.Count() > 0) { ViewBag.errors = errors; return(View("Register", m)); } else { string pattern = @"^[A-z0-9._-]+(@)[a-z-9_-]+\.[a-z]{2,5}$"; Regex r = new Regex(pattern); if (!r.IsMatch(m.Mail)) { errors.Add("Cette adresse mail n'est pas valide!"); } pattern = "[a-zA-Z0-9]{4,10}"; r = new Regex(pattern); if (!r.IsMatch(m.Pseudo)) { errors.Add("Le pseudo doit contenir minimum 4 caractères!"); } pattern = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\\W)"; r = new Regex(pattern); if (!r.IsMatch(m.Password)) { errors.Add("Mot de passe invalide! Il doit être compris entre 8 et 15 caractères et contenir " + "au minimum un chiffre, une majuscule et un caractère spécial"); } if (errors.Count() > 0) { ViewBag.errors = errors; return(View("Register", m)); } } string NumeroUnique = Guid.NewGuid().ToString("N"); /*Creation d'un ID unique pour le cookie*/ string HashPassword = Crypto.HashMdp(password); /*Cryptage PassWord*/ m = new Membres { Pseudo = pseudo, Mail = mail, Password = HashPassword, Ip = remoteIpAddress, NoUnique = NumeroUnique, DateInscription = DateTime.Now }; SmtpClient client = new SmtpClient { Host = PassConnection.SmtpConfig(), Port = 587, EnableSsl = true, Credentials = new NetworkCredential("*****@*****.**", PassConnection.MailPassWord()) }; MailMessage message = new MailMessage("*****@*****.**", m.Mail) { IsBodyHtml = true, Body = "Merci de confirmer votre adresse mail en cliquant sur le lien suivant: <a href = \"http://www.greys-anatomy-fans.com/Membres/Confirm/" + m.NoUnique + "\">Lien</a>" , Subject = "Confirmez votre adresse Mail" }; client.Send(message); m.AddMembre(); CookieOptions option = new CookieOptions { Expires = DateTime.Now.AddDays(30), HttpOnly = true }; Response.Cookies.Append("User", m.NoUnique, option); var request = Request; return(View("SendMailRegistration", m)); }