public async Task Consume(ConsumeContext <IChangeUserPasswordCommand> context) { var changePasswordArguments = context.Message; var user = await _userService.GetUserAsync(changePasswordArguments.UserId); var sendEmailEndpoint = context.GetSendEndpoint(NotificationServiceConstants.SendEmailNotificationUri); if (changePasswordArguments.PasswordSetupMethod == Enums.User.PasswordSetupMethod.GeneratePasswordViaLink) { var tempResetLink = await _passwordService.GetPasswordResetLink(user.Id, user.Email); await sendEmailEndpoint.Result.Send <ISendEmailCommand>( new { UserName = user.Email, TempResetLink = tempResetLink, To = changePasswordArguments.PasswordSetupEmail, EmailTemplateType = EmailTemplateType.ChangePassword, }); } else { _activeDirectoryService.UpdateUserPassword(user.Email, changePasswordArguments.Password); if (changePasswordArguments.SendPlainPasswordViaEmail) { await sendEmailEndpoint.Result.Send <ISendEmailCommand>( new { UserName = user.Email, To = changePasswordArguments.PasswordSetupEmail, EmailTemplateType = EmailTemplateType.PasswordChangedSendPlainPasswordViaEmail, changePasswordArguments.Password }); } else { await sendEmailEndpoint.Result.Send <ISendEmailCommand>( new { UserName = user.Email, To = user.Email, EmailTemplateType = EmailTemplateType.PasswordChanged, }); } } }
public async Task <IHttpActionResult> UpdatePassword(UpdatePasswordViewModel model) { var user = await _userService.GetUserAsync(model.UserId); if (user == null) { return(NotFound()); } var confirmationTokenResponse = await _passwordService.IsConfirmationTokenValid(user.Email, model.Token); if (!confirmationTokenResponse) { return(BadRequest("Confirmation token is invalid")); } await _activeDirectoryService.UpdateUserPassword(user.Email, model.Password); _userService.ResetSecurityStamp(user.UserName); return(Ok(true)); }