public ActionResult Forgot(string email) { ForgotPassViewData forgot = new ForgotPassViewData(); email = email.Trim(); if (!CovCakeMailer.IsValidEmail(email)) { ModelState.AddModelError("email", "L'adresse email est incorecte."); } IUserProfile userProfile = Data.UserDataAccess.GetUser(email); if (userProfile == null) { ModelState.AddModelError("email", "Aucun utilisateur avec cette adresse n'a été trouvé."); } if (ModelState.IsValid) { string infoMsgTitle = "Mot de passe réinitialisé"; string infoMsg = string.Format("Un email a été envoyé à {0} avec un nouveau mot de passe.", email); //si pas encore activé envoi de activation //TODO: ajouter le user dans la table UserProfile des linscription et pas ke dans le membership /* * if (!userProfile.GetMembershipUser().IsApproved && userProfile.ActivationKey.HasValue) * { * this.CovCakeMailer.SendSignupMail(userProfile, userProfile.Email, "** votre mot de passe ***"); * infoMsg = string.Format("L'email d'activation de compte viens d'être réenvoyé à {0}.", email); * } */ string newPass = CovCakeServices.GenerateAlphaNumPass(int.Parse(CovCakeConfiguration.DefaultPasswordLenght)); newPass = newPass.ToLower(); MembershipUser membershipUser = userProfile.GetMembershipUser(); membershipUser.ChangePassword(membershipUser.ResetPassword(), newPass); // IUserProfile userProfile = Data.UserDataAccess.GetUser(email); this.CovCakeMailer.SendForgotPasswordMail(userProfile, email, newPass); forgot.Email = email; forgot.Succeed = true; return(Info(infoMsgTitle, infoMsg)); //should redirect //return View(forgot); } else { // forgot.Succeed = false; return(View(forgot)); } }
/// <summary> /// /// </summary> /// <param name="ak">clé d'activation shrinké</param> /// <param name="nm"></param> /// <returns></returns> public ActionResult SetNewMail(string ak, string nm) { string errMsg = "Impossible d'activer votre nouvelle adresse email."; if (ak.IsNullOrEmpty() || nm.IsNullOrEmpty()) { // ViewData["ErrorMsg"] = errMsg; //"Impossible d'activer votre nouvelle adresse email"; return(Error(errMsg)); } Guid actKey = ak.ToGuid(); nm = nm.UnShrinkForUrl(); if (!Mailer.IsValidEmail(nm) || actKey == Guid.Empty) { return(Error(errMsg)); } try { //this.ForceUserLogOut(); nm = nm.ToLower(); IUserProfile user = Data.UserDataAccess.GetUserByActKey(actKey); if (user == null) { return(Error(errMsg)); } //Test si l'email est déjà utilisé IUserProfile testMailUser = Data.UserDataAccess.GetUserByMail(nm); if (testMailUser != null && testMailUser.UserId != user.UserId) { string errMsg2 = nm + ", Cette adresse email est déjà utilisée."; return(Error(errMsg2)); } testMailUser = null; MembershipUser membershipUser = user.GetMembershipUser(); membershipUser.Email = nm; Membership.UpdateUser(membershipUser); //user.Email = nm; user.UserName = nm; //modifie aussi le userName dans membership user.ActivationKey = null; //on efface le ActivationKey //Data.UserDataAccess.Save();// save du username Data.CovCakeDataContext.SubmitChanges(ConflictMode.ContinueOnConflict); // if (this.CurrentUserId == user.UserId) this.CovCakeMailer.SendChangeEmailConfirmation(user, nm); this.ForceUserLogIn(user.UserId); //log l'utilisateur de force } catch (ChangeConflictException e) { var db = Data.CovCakeDataContext; CovCake.Log.Info(e.Message); foreach (ObjectChangeConflict occ in db.ChangeConflicts) { //No database values are merged into current. occ.Resolve(RefreshMode.KeepCurrentValues); } /* * * CovCake.Log.Info("Optimistic concurrency error."); * CovCake.Log.Info(e.Message); * * foreach (ObjectChangeConflict occ in db.ChangeConflicts) * { * MetaTable metatable = db.Mapping.GetTable(occ.Object.GetType()); * //cov_UserProfile entityInConflict = (Customer)occ.Object; * CovCake.Log.Info(String.Format("Table name: {0}", metatable.TableName)); * CovCake.Log.Info( String.Format("Customer ID: ")); * // Console.WriteLine(entityInConflict.CustomerID); * foreach (MemberChangeConflict mcc in occ.MemberConflicts) * { * object currVal = mcc.CurrentValue; * object origVal = mcc.OriginalValue; * object databaseVal = mcc.DatabaseValue; * MemberInfo mi = mcc.Member; * CovCake.Log.Info( String.Format("Member: {0}", mi.Name)); * CovCake.Log.Info( String.Format("current value: {0}", currVal)); * CovCake.Log.Info( String.Format("original value: {0}", origVal)); * CovCake.Log.Info( String.Format("database value: {0}", databaseVal)); * } * }*/ } catch (Exception ex) { CovCake.Log.Error(ex.Message, ex); return(Error(errMsg)); } this.ValidStateMessages.Add("Votre Adresse email a bien été changée!"); TempData["ViewInfos"] = this.ValidStateMessages; return(RedirectToRoute(CovCake.Routes.MONCOMPTE));// RedirectToAction("MonCompte", "User");//MonCompte(null, null, null, null); }