public async Task <ActionResult> RecoverPasswordPost(RecoverViewModel recoverVm) { if (ModelState.IsValid) { var user = await _userManager.FindByEmailAsync(recoverVm.Email); if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id))) { ModelState.AddModelError("email", "Email này chưa được đăng ký!"); return(View("RecoverPassword", recoverVm)); } var newPassword = "******"; user.PasswordHash = _userManager.PasswordHasher.HashPassword(newPassword); await _userManager.UpdateAsync(user); ViewData["SuccessMsg"] = "Lấy lại mật khẩu thành công!"; // send response mail string mailContent = System.IO.File.ReadAllText(Server.MapPath("/Assets/client/template/recoverPassword.html")); mailContent = mailContent.Replace("{{Link}}", ConfigHelper.GetByKey("CurrentLink") + "dang-nhap.html"); mailContent = mailContent.Replace("{{Username}}", user.UserName); mailContent = mailContent.Replace("{{Password}}", newPassword); var toEmail = user.Email; string mailSubject = "Lấy lại mật khẩu tại hulasports.com"; MailHelper.SendMail(toEmail, mailSubject, mailContent); } return(View("RecoverPassword", recoverVm)); }
public ActionResult Recover(RecoverViewModel viewModel) { if (string.IsNullOrWhiteSpace(viewModel.Email)) { TempData[RecoverValidationSummaryKey] = T("You did not provide a valid email.").ToString(); } else { if (_userService.VerifyUserUnicity(viewModel.Email, viewModel.Email)) { TempData[RecoverValidationSummaryKey] = T("Oops, this email address is not registered!").ToString(); } else { var siteUrl = _workContextAccessor.GetContext().HttpContext.Request.Url; _userService.SendLostPasswordEmail(viewModel.Email, nonce => new Uri(siteUrl, Url.Action("ResetPassword", "Account", new { area = "Teeyoot.Account", nonce = HttpUtility.UrlEncode(nonce) })) .ToString()); TempData[RecoverEmailSentKey] = true; } } return(this.RedirectLocal("~/Recover")); }
public ActionResult Forgot(RecoverViewModel recoverModel) { var u = m.GetUserByEmail(recoverModel.userEmail); if (u == null) { ModelState.AddModelError("", "Invalid Email: No account found with the specified email"); return(View()); } recoverModel.banUser = u.banUser; recoverModel.email_Verified = u.email_Verified; recoverModel.userName = u.userName; bool error = m.RecoverUser(recoverModel); if (!error) { ViewBag.success = "An email has been sent to the specified email, provided it was used to make a Cooking Curator Account"; u.GUID = recoverModel.GUID; return(View()); } else { //Account is banned or email was never verified ModelState.AddModelError("", "You cannot recover this account, either your email isn't verified or you are banned"); return(View()); } }
public ActionResult Recover() { var model = new RecoverViewModel { HasRecaptcha = _configuration.HasRecaptcha }; return(View("Recover", model)); }
public async Task <ActionResult> RecoverAsync(RecoverViewModel model) { var requester = UserIdentity.GetRequester(this); var userName = model.UserName; AppSensor.ValidateFormData(this, new List <string> { "UserName" }); if (ModelState.IsValid) { var user = _context.User.SingleOrDefault(u => u.UserName == model.UserName && u.Enabled && u.EmailVerified && u.Approved); if (_configuration.HasRecaptcha) { if (!_recaptcha.ValidateRecaptcha(this)) { Logger.Information("Failed Account Recover Post Recaptcha failed by requester {@requester}", requester); return(View("Recover", model)); } } if (user != null) { user.PasswordResetToken = Guid.NewGuid().ToString().Replace("-", ""); user.PasswordResetExpiryDateUtc = DateTime.UtcNow.AddMinutes(15); // Send recovery email with link to recover password form var emailBody = EmailTemplates.ChangePasswordPendingBodyText(user.FirstName, user.LastName, _configuration.ApplicationName, _configuration.WebsiteBaseUrl, user.PasswordResetToken); var emailSubject = $"{_configuration.ApplicationName} - Complete the password recovery process"; _services.SendEmail(_configuration.DefaultFromEmailAddress, new List <string> { user.UserName }, null, null, emailSubject, emailBody, true); user.UserLogs.Add(new UserLog { Description = "Password reset link generated and sent" }); await _context.SaveChangesAsync(); } else { Logger.Information("Failed Account Recover Post UserName {userName} by requester {@requester}", userName, requester); return(View("RecoverSuccess")); } } else { AppSensor.InspectModelStateErrors(this); } return(View("RecoverSuccess")); }
public ActionResult Recover() { var viewModel = new RecoverViewModel(); if (TempData[RecoverValidationSummaryKey] != null) { viewModel.RecoverFailed = true; viewModel.RecoverIssueSummary = (string)TempData[RecoverValidationSummaryKey]; } if (TempData[RecoverEmailSentKey] != null) { viewModel.RecoverEmailSent = (bool)TempData[RecoverEmailSentKey]; } return(View(viewModel)); }
public async Task Given_ValidSubmissionData_When_RecoverPost_Then_SavesEmailsAndSuccessViewReturned() { // Arrange RecoverViewModel model = new RecoverViewModel { UserName = TestUserName }; _recaptcha.Expect(a => a.ValidateRecaptcha(Arg <Controller> .Is.Anything)).Return(true); // Act var result = await _sut.RecoverAsync(model); // Assert AssertViewResultReturned(result, "RecoverSuccess"); _services.AssertWasCalled(a => a.SendEmail(Arg <string> .Is.Anything, Arg <List <string> > .Is.Anything, Arg <List <string> > .Is.Anything, Arg <List <string> > .Is.Anything, Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything)); Context.AssertWasCalled(a => a.SaveChangesAsync()); }
public ActionResult Reset(RecoverViewModel resetModel, String id) { //Take the GUID from the URL resetModel.GUID = id; //Passwords must match if (resetModel.confirmPassword != resetModel.password) { ModelState.AddModelError("", "Error: The passwords you entered do not match."); return(View()); } //Check for special characters Regex r = new Regex("^[a-zA-Z0-9_]*$"); if (!r.IsMatch(resetModel.password)) { ModelState.AddModelError("", "Error: Do not use special characters, only alphanumeric values."); return(View()); } if (resetModel.password.Length < 8) { ModelState.AddModelError("", "Error: Password must be at least 8 characters."); return(View()); } bool changeSuccess = m.ChangePW(resetModel); //Database updated successfully or not if (changeSuccess) { return(RedirectToAction("Index")); } else { ModelState.AddModelError("", "Error: An unknown error occured."); return(View()); } }
//Recover Password public ActionResult RecoverPassword(RecoverViewModel recoverVm) { return(View(recoverVm)); }