public void ForgottenPassword(ForgottenPasswordModel model) { // Validate supplied reset password info _authenticationValidator.ValidateForgottenPassword(model); // Get reset password token TimeSpan expiryTimeSpan = _authenticationConfigurationService.GetForgottenPasswordExpiryTimeSpan(model.TenantId); Token resetPasswordToken = _securityService.CreateToken(expiryTimeSpan); // Get user string modelEmail = model.Email.Trim().ToLower(); User user = _userRepository.ReadUserByEmail(model.TenantId, modelEmail); // Sets a user's reset password token in preparation for a reset password action user.ResetPasswordTokenValue = resetPasswordToken.Value.ToString(); user.ResetPasswordTokenExpiry = resetPasswordToken.Expiry; // Update user _userRepository.UpdateUser(user); // Get details of email that will be sent to user requesting password reset Email email = _authenticationConfigurationService.GetForgottenPasswordEmail(Web, Domain, user.Email, user.Alias, resetPasswordToken); // Send forgotten password email to user _emailService.SendEmail(email); }
/// <summary> /// Submits form. /// </summary> /// <param name="form">View model containing form definition and submitted values.</param> /// <returns>Result of form post.</returns> public FormResult PostForm(Form form) { try { // Get website identifier long tenantId = _authenticationService.TenantId; // Get new profile details from form values ForgottenPasswordModel model = new ForgottenPasswordModel { Email = ((TextField)form.Fields["email"]).Value, TenantId = tenantId }; // Initiate password reset _authenticationService.ForgottenPassword(model); // Return form result with no errors return(_formHelperService.GetFormResult()); } catch (ValidationErrorException ex) { // Return form result containing errors return(_formHelperService.GetFormResultWithValidationErrors(ex.Errors)); } catch (Exception) { // Return form result containing unexpected error message return(_formHelperService.GetFormResultWithErrorMessage(ApplicationResource.UnexpectedErrorMessage)); } }
/// <summary> /// Validates forgotten password action. /// </summary> /// <param name="model">Identifies user performing the forgotten password action.</param> /// <param name="keyPrefix">Validation key prefix.</param> public void ValidateForgottenPassword(ForgottenPasswordModel model, string keyPrefix = null) { // Check that email address correctly supplied _modelValidator.Validate(model, keyPrefix); // Validate user User user = _userRepository.ReadUserByEmail(model.TenantId, model.Email.Trim().ToLower()); if (user == null) { throw new ValidationErrorException(new ValidationError(null, AuthenticationResource.ForgottenPasswordUserNotFoundMessage, keyPrefix)); } if (!user.Confirmed) { throw new ValidationErrorException(new ValidationError(null, AuthenticationResource.ForgottenPasswordUserNotConfirmedMessage, keyPrefix)); } if (!user.Enabled) { throw new ValidationErrorException(new ValidationError(null, AuthenticationResource.ForgottenPasswordUserDisabledMessage, keyPrefix)); } }