public async Task <ActionResult> ResetPasswordAsync(ResetPasswordUserVM reset) { try { LogTraceVM logTrace = new LogTraceVM(string.Empty, "GetUserById", "GetAllUsers"); logTrace.Parameters.Add(reset); if (ModelState.IsValid) { await this._userApplication.ResetPasswordAsync(reset); } else { throw new Exception(string.Join(",", ModelState.Values.Where(value => value.Errors.Any()).Select(value => value.Errors.Select(error => error.ErrorMessage)))); } return(Ok("Your password has been reseted!")); } catch (Exception error) { LogErrorVM logError = new LogErrorVM(error.Message, error.StackTrace, "UserController", "CreateUser"); logError.Parameters.Add(reset); this._logger.LogError(error, logError.ToString()); return(BadRequest(error.Message)); } }
public async Task <ApiResponse <ResetPasswordUserVM> > ResetPasswordAsync(ResetPasswordUserVM resetPasswordUserVM) { try { return(await _httpClient.PostJTokenAsync <ApiResponse <ResetPasswordUserVM> >("api/account/resetpassword", resetPasswordUserVM)); } catch (Exception ex) { return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status500InternalServerError, "Api threw an Exception while resetting password", null, null, ex)); } }
public async Task ResetPasswordAsync(ResetPasswordUserVM resetPasswordUserVM) { User user = await this._userManager.FindByNameAsync(resetPasswordUserVM.UserName); if (null != user) { string resetPasswordToken = await this._userManager.GeneratePasswordResetTokenAsync(user); await this._userManager.ResetPasswordAsync(user, resetPasswordToken, resetPasswordUserVM.NewPassword); } else { throw new Exception("User not found or invalid."); } }
public async Task <ApiResponse <ResetPasswordUserVM> > ResetPasswordAsync(ResetPasswordUserVM userToResetPassword) { try { var user = await _userManager.FindByEmailAsync(userToResetPassword.Email); if (user == null) { return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status401Unauthorized, "There is no User with this Email to Confirm", new[] { new KeyValuePair <string, string>("Email", "No such email") }.ToLookup())); } var resetPasswordResult = await _userManager.ResetPasswordAsync(user, userToResetPassword.ResetPasswordCode.Base64SafeUrlToUTF8(), userToResetPassword.Password); if (!resetPasswordResult.Succeeded) { var isInvalidToken = resetPasswordResult.Errors.FirstOrDefault(e => e.Code.EqualsInvariant("InvalidToken")); if (isInvalidToken != null) { return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status401Unauthorized, isInvalidToken.Description, new[] { new KeyValuePair <string, string>(nameof(ResetPasswordUserVM.ResetPasswordCode), isInvalidToken.Description) }.ToLookup())); } var errors = resetPasswordResult.Errors.ToLookup(userToResetPassword.GetPropertyNames()); return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status401Unauthorized, "Password Reset Failed", errors)); } if (await _userManager.IsLockedOutAsync(user)) { await _userManager.SetLockoutEndDateAsync(user, DateTimeOffset.UtcNow); } return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status200OK, $"Password for User: \"{userToResetPassword.UserName}\" has been changed", null, _mapper.Map(user, userToResetPassword))); } catch (Exception ex) { return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status500InternalServerError, "Resetting Password Failed", null, null, ex)); } }