/*pour envoyer un mail de reset password a un utilisateur*/ public ActionResult SendMail(UTILISATEURViewModel model) { redactapplicationEntities db = new Models.redactapplicationEntities(); UTILISATEUR utilisateur = db.UTILISATEURs.FirstOrDefault(x => x.userMail == model.userMail); Guid TemporaryIdUser = Guid.NewGuid(); if (utilisateur == null) { return(View("ErrorUserNotExist")); } if (Request.Url != null) { var url = Request.Url.Scheme; if (Request.Url != null) { string callbackurl = Request.Url.Host != "localhost" ? Request.Url.Host : Request.Url.Authority; var port = Request.Url.Port; if (!string.IsNullOrEmpty(port.ToString()) && Request.Url.Host != "localhost") { callbackurl += ":" + port; } url += "://" + callbackurl; } ViewBag.mailRecepteur = model.userMail; //var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>"; StringBuilder mailBody = new StringBuilder(); mailBody.AppendFormat("Dear " + CultureInfo.CurrentCulture.TextInfo.ToTitleCase(utilisateur.userNom.ToLower())); mailBody.AppendFormat("<br />"); mailBody.AppendFormat("<p>Your recently requested to reset your password for your " + CultureInfo.CurrentCulture.TextInfo.ToTitleCase(utilisateur.userNom.ToLower()) + " account. Click the link bellow to reset it.</p>"); mailBody.AppendFormat("<br />"); mailBody.AppendFormat(url + "/Login/UpdatePassword?token=" + TemporaryIdUser); mailBody.AppendFormat("<br />"); mailBody.AppendFormat("<p>If you did not request a password reset, please ignore this email. </p>"); mailBody.AppendFormat("<br />"); mailBody.AppendFormat("Thanks."); mailBody.AppendFormat("<br />"); mailBody.AppendFormat("Mediaclick Company."); bool isSendMail = MailClient.SendResetPasswordMail(model.userMail, mailBody.ToString(), "Redact application - forgotten password."); if (isSendMail) { utilisateur.token = TemporaryIdUser; utilisateur.dateToken = DateTime.Now; int result = db.SaveChanges(); if (result <= 0) { return(View("ErrorConfiguration")); } return(View("SendMailSuccess", model)); } } return(View("ErrorConfiguration")); }
/*pour envoyer un mail de reset password a un utilisateur*/ public ActionResult SendMail(UTILISATEURViewModel model) { redactapplicationEntities db = new Models.redactapplicationEntities(); UTILISATEUR utilisateur = db.UTILISATEURs.FirstOrDefault(x => x.userMail == model.userMail); Guid TemporaryIdUser = Guid.NewGuid(); if (utilisateur == null) { return(View("ErrorUserNotExist")); } if (Request.Url != null) { var url = Request.Url.Scheme; if (Request.Url != null) { string callbackurl = Request.Url.Host != "localhost" ? Request.Url.Host : Request.Url.Authority; var port = Request.Url.Port; if (!string.IsNullOrEmpty(port.ToString()) && Request.Url.Host != "localhost") { callbackurl += ":" + port; } url += "://" + callbackurl; } ViewBag.mailRecepteur = model.userMail; //var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>"; StringBuilder mailBody = new StringBuilder(); mailBody.AppendFormat(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(utilisateur.userNom.ToLower()) + ","); mailBody.AppendFormat("<br />"); mailBody.AppendFormat("<p>Votre avez récemment demandé de réinitialiser votre mot de passe pour le compte " + CultureInfo.CurrentCulture.TextInfo.ToTitleCase(utilisateur.userNom.ToLower()) + " .Cliquez sur le lien ci-dessous pour le réinitialiser.</p>"); mailBody.AppendFormat("<br />"); mailBody.AppendFormat(url + "/Login/UpdatePassword?token=" + TemporaryIdUser); mailBody.AppendFormat("<br />"); mailBody.AppendFormat("<p> Si vous n'avez pas demandé la réinitialisation du mot de passe, ignorez cet e-mail. </p>"); mailBody.AppendFormat("<br />"); mailBody.AppendFormat("Codialement."); mailBody.AppendFormat("<br />"); mailBody.AppendFormat("Media click App ."); bool isSendMail = MailClient.SendMail(model.userMail, mailBody.ToString(), "Media click App - réinitialisation du mot de passe oublié."); if (isSendMail) { utilisateur.token = TemporaryIdUser; utilisateur.dateToken = DateTime.Now; int result = db.SaveChanges(); if (result <= 0) { return(View("ErrorConfiguration")); } return(View("SendMailSuccess", model)); } } return(View("ErrorConfiguration")); }
/*pour aller a la page d'accueil de notre application*/ public ActionResult Accueil() { HttpCookie trigerAuths = Request.Cookies["trigerAuths"]; UTILISATEURViewModel user = new UTILISATEURViewModel(); if (trigerAuths != null && Session["saveOnComputer"] != null) { user.userMail = trigerAuths["username"]; user.userMotdepasse = trigerAuths["password"]; user.saveOnComputer = true; user.logoUrl = (string)Session["logoUrl"]; return(View(user)); } else { user.saveOnComputer = false; user.logoUrl = (string)Session["logoUrl"]; return(View(user)); } //if (!string.IsNullOrEmpty(HttpContext.User.Identity.Name)) //{ // Guid userId = new Guid(HttpContext.User.Identity.Name); // var userobj = new redactapplicationEntities().UTILISATEURs.Find(userId); // user.userMail = userobj.userMail; // user.userMotdepasse = userobj.userMotdepasse; // user.logoUrl = userobj.logoUrl; // return View(user); //} //else //{ // if (Session["mail"] != null) // { // user.userMail = Session["mail"].ToString().ToLower(); // user.userMotdepasse = Session["pass"].ToString(); // user.logoUrl = Session["logoUrl"] != null ? Session["logoUrl"].ToString():""; // return View(user); // } //} return(View()); }
/*pour modifier le mot de passe*/ public ActionResult ConfirmUpdatePassword(Guid?token, UTILISATEURViewModel model) { if (Session["tokenPass"] != null) { token = (Guid)Session["tokenPass"]; Session["tokenPass"] = null; } string patternNoAplha = "[\\W]"; string patternDigit = "[0-9]"; string patternAlphaUpper = "[A-Z]"; string patternAlphaLower = "[a-z]"; List <string> Error = new List <string>(); ViewBag.ErrorPassWord = ""; if (model.userMotdepasse == "") { Error.Add("The password entered is empty."); } if (model.userMotdepasseConfirme == "") { Error.Add("The confirmation password is empty."); } if (model.userMotdepasse != model.userMotdepasseConfirme) { Error.Add("The password entered and the confirmation password are not the same."); } if ((model.userMotdepasse.ToString().Length >= 8) == false) { Error.Add("The password must contain at least 8 characters."); } if ((Regex.IsMatch(model.userMotdepasse.ToString(), patternNoAplha)) == false) { Error.Add("The password must contain at least 1 non-alphanumeric character."); } if ((Regex.IsMatch(model.userMotdepasse.ToString(), patternDigit)) == false) { Error.Add("The password must contain at least 1 digit character."); } if ((Regex.IsMatch(model.userMotdepasse.ToString(), patternAlphaUpper)) == false) { Error.Add("The password must contain at least 1 uppercase character."); } if ((Regex.IsMatch(model.userMotdepasse.ToString(), patternAlphaLower)) == false) { Error.Add("The password must contain at least 1 lowercase character."); } if (Error.Count != 0) { Session["tokenPass"] = token; ViewBag.userId = token; ViewBag.ErrorPassWord = Error; return(View("ErrrorForgotPassword")); } redactapplicationEntities db = new Models.redactapplicationEntities(); UTILISATEUR utilisateur = db.UTILISATEURs.SingleOrDefault(x => x.token == token); if (utilisateur == null) { Error = new List <string> { "You are no longer allowed to change your password." }; Session["tokenPass"] = token; ViewBag.userId = token; ViewBag.ErrorPassWord = Error; return(View("ErrrorForgotPassword")); } utilisateur.userMotdepasse = Encryptor.EncryptPass(model.userMotdepasse); utilisateur.token = null; utilisateur.dateToken = null; db.SaveChanges(); return(RedirectToAction("UpdatePasswordSuccess", "Login")); }
/*pour s'authentifier*/ public ActionResult AuthentificationUser(UTILISATEURViewModel model) { try { string pwdCrypte = model.userMotdepasse.Trim(); redactapplicationEntities db = new Models.redactapplicationEntities(); UTILISATEUR utilisateur = null; if (model.saveOnComputer) { utilisateur = db.UTILISATEURs.SingleOrDefault(x => x.userMail == model.userMail.Trim() && x.userMotdepasse == pwdCrypte); if (utilisateur == null) { pwdCrypte = Encryptor.EncryptPass(pwdCrypte); } } else { pwdCrypte = Encryptor.EncryptPass(pwdCrypte); } utilisateur = db.UTILISATEURs.SingleOrDefault(x => x.userMail == model.userMail.Trim() && x.userMotdepasse == pwdCrypte); if (utilisateur != null) { FormsAuthentication.SetAuthCookie(utilisateur.userId.ToString(), model.saveOnComputer);/*CREATION COOKIES*/ //Session["mail"] = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(utilisateur.userMail); //Session["pass"] = pwdCrypte; Session["logoUrl"] = utilisateur.logoUrl; Session["name"] = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(utilisateur.userNom); Session["surname"] = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(utilisateur.userPrenom); Session["role"] = (new Utilisateurs()).GetUtilisateurRoleToString(utilisateur.userId); if (model.saveOnComputer) { HttpCookie trigerAuths = new HttpCookie("trigerAuths"); trigerAuths.Values["username"] = utilisateur.userMail; trigerAuths.Values["password"] = Encryptor.Decrypt(utilisateur.userMotdepasse); trigerAuths.Expires = DateTime.Now.AddDays(Convert.ToInt32(ConfigurationManager.AppSettings["cookiesValidity"])); Response.Cookies.Add(trigerAuths); } } else { return(View("ErrorInvalidAccountOrPassword")); } var data = (new Utilisateurs()).GetUtilisateurRole(utilisateur.userId).ToList(); { if (data.Count == 1) { if (data[0] == 1) { return(RedirectToRoute("Home", new RouteValueDictionary { { "controller", "Contact" }, { "action", "ListeContact" } })); } if (data[0] == 2) { return(RedirectToRoute("Home", new RouteValueDictionary { { "controller", "Commandes" }, { "action", "ListCommandes" } })); } if (data[0] == 4) { return(RedirectToRoute("Home", new RouteValueDictionary { { "controller", "Contact" }, { "action", "ListeContact" } })); } if (data[0] == 3 || data[0] == 5) { return(RedirectToRoute("Home", new RouteValueDictionary { { "controller", "Home" }, { "action", "ListeUser" }, { "numpage", 1 }, { "nbrow", 10 } })); } } } } catch (Exception ex) { Debug.WriteLine(ex); Debug.WriteLine("passe exception"); return(View("ErrorException")); } Debug.WriteLine("passe error final"); return(View("ErrorInvalidAccountOrPassword")); }
/*pour terminer l'envoi du mail et retourner a la page d'authentification*/ public ActionResult DoSendMail(UTILISATEURViewModel model) { return(RedirectToAction("Accueil", "Login")); }