/// <summary> /// Получает ChangePasswordEmailModel /// </summary> /// <param name="Email"></param> /// <param name="NewPassword"></param> /// <param name="SelfChangePassword"></param> /// <returns></returns> public static ChangePasswordEmailModel GetChangePasswordEmailModel(string Email, string NewPassword, bool SelfChangePassword) { ChangePasswordEmailModel toReturn = new ChangePasswordEmailModel(); toReturn.Caption = "Change password"; toReturn.MailTo.Add(Email); toReturn.Password = NewPassword; toReturn.SelfChanged = SelfChangePassword; return(toReturn); }
public ActionResult EditPassword(NotSignedPasswordModel payload) { if (!ModelState.IsValid) { return(View("PasswordRecovery", payload)); } var isValidHash = _auth.Validate(payload.Email, payload.HashCode, Hashs.Recovery); var EFUser = _auth.GetCredentials(payload.Email); if (!isValidHash || EFUser == null) { Response.StatusCode = (int)HttpStatusCode.NotFound; // ModelState.AddModelError("", "User not registered."); ViewBag.Error = "Incapaz de alterar a senha para o usuário especificado."; return(View("PasswordRecovery", payload)); } try { // get new password recovery hash created to user var newLoginHash = _auth.ProvideLogin(EFUser, payload.NewPassword); var rootUrl = System.Web.HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); // setup view model to fill email var changePasswordEmailModel = new ChangePasswordEmailModel { RecipientDisplayName = EFUser.Name, RecipientEmail = EFUser.Email, NewPassword = payload.NewPassword, Site = rootUrl }; // render the view as string to send via SMTP var emailContentHtml = StringRenderer.RenderView(changePasswordViewPath, changePasswordEmailModel, false); _email.Send(emailContentHtml, changePasswordEmailModel); } catch (Exception) { Response.StatusCode = (int)HttpStatusCode.NotFound; ModelState.AddModelError("", "User not registered."); ViewBag.Error = "Incapaz de alterar a senha para o usuário especificado."; return(View("PasswordRecovery", payload)); } Response.StatusCode = (int)HttpStatusCode.OK; TempData["Message"] = "Entre com sua nova senha."; return(RedirectToAction("Index")); }
/// <summary> /// Изменение пароля пользователя с идентификатором <paramref name="id" /> /// пользователем с Email <paramref name="currentUserEmail" />; /// В случае если пользователь меняет пароль самому себе он должен указать старый пароль /// </summary> /// <param name="id">Идентификатор пользователя для которого меняется пароль</param> /// <param name="currentUserEmail">Email польозователя который меняет пароль</param> /// <param name="model"></param> /// <returns></returns> public ServiceResponce ChangePassword(int id, string currentUserEmail, ChangePasswordModel model) { User user = _userRep.FindOneById(id); if (user == null) { return(ServiceResponce .FromFailed() .Add("error", "User with specified Id was not found")); } bool SelfChangePassword = false; if (user.UserName.Equals(currentUserEmail)) { SelfChangePassword = true; if (!user.Password.Equals(PasswordService.GeneratePasswordHash(model.OldPassword))) { return(ServiceResponce .FromFailed() .Add("error", "Incorrect OldPassword")); } } user.Password = PasswordService.GeneratePasswordHash(model.NewPassword); _userRep.Save(user); if (model.SendCopyPassword) { // Создаем задачу отправки сообщения в фоне и запускаем ее new Thread(send => { ChangePasswordEmailModel ChangePasswordEmailModel = ChangePasswordEmailModelHelper.GetChangePasswordEmailModel(user.UserName, model.NewPassword, SelfChangePassword); string ChangePasswordText = _templateServ .Run("Emails/ChangePassword", typeof(ChangePasswordEmailModel), ChangePasswordEmailModel); EmailService.SendMail(ChangePasswordEmailModel, ChangePasswordText); }).Start(); } return(ServiceResponce.FromSuccess()); }
public ActionResult Index(ProfileModel payload) { if (!ModelState.IsValid) { return(View(payload)); } var EFUser = (User)Session["User"]; if (EFUser == null) { ViewBag.Error = "Unable to update profile, due to user disabled or not found."; return(View(payload)); } EFUser = _auth.GetCredentials(EFUser.Email); EFUser.Name = payload.Name; EFUser.Email = payload.Email; EFUser.IsAnonymous = payload.IsAnonymous; _auth.UpdateCredentials(EFUser, payload.Password); Session["User"] = EFUser; // setup view model to fill email render the view as string to send via SMTP if (!string.IsNullOrEmpty(payload.Password)) { var rootUrl = System.Web.HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); var changePasswordEmailModel = new ChangePasswordEmailModel { RecipientDisplayName = EFUser.Name, RecipientEmail = EFUser.Email, NewPassword = payload.Password, Site = rootUrl }; var emailContentHtml = StringRenderer.RenderView(changePasswordViewPath, changePasswordEmailModel, false); _email.Send(emailContentHtml, changePasswordEmailModel); } ViewBag.Success = "Profile updated"; return(View("Index", payload)); }