public IActionResult ChangePassword([FromBody] Auth_ChangeUserPasswordModel changeUserPassword) { Console.WriteLine("api/auth/changepassword"); // Authenticate int userID = Authenticate(); if (userID == -1) { return(StatusCode(405, "Authorization token is not valid.")); } // Check if account is a external linked account. Tuple <bool, string> isAccountExternal = _authAction.IsAccountLinkedToAlternativeAuth(userID); if (isAccountExternal.Item1) { return(StatusCode(405, "Your account was created using " + isAccountExternal.Item2 + ", visit them to change your password")); } // Validate user inputed data Tuple <bool, string> validation = _inputValidations.Auth_ChangePasswordModelValidation(changeUserPassword); if (!validation.Item1) { return(StatusCode(405, validation.Item2)); } // validate the validation password. changeUserPassword.currentPassword = Hash.HashPassword(changeUserPassword.currentPassword); changeUserPassword.newPassword = Hash.HashPassword(changeUserPassword.newPassword); if (_authAction.PasswordMatch(_authAction.GetUsersData(userID).username, changeUserPassword.currentPassword) == -1) { return(StatusCode(405, "Validation failed, password incorrect.")); } // return Tuple <bool, string> returnedStatus = _authAction.ChangePassword(userID, changeUserPassword); if (returnedStatus.Item1) { return(Ok("Successfully changed password")); } else { return(StatusCode(500, returnedStatus.Item2)); } }
public Tuple <bool, string> ChangePassword(int userID, Auth_ChangeUserPasswordModel changeUserPasswordModel) { if (!IsAccountLinkedToAlternativeAuth(userID).Item1) { try { authQuery.ChangePassword(userID, changeUserPasswordModel.newPassword); return(Tuple.Create(true, String.Empty)); } catch { return(Tuple.Create(false, "Error sending password to database")); } } return(Tuple.Create(false, "Cannot change password on a linked acount.")); }
// This class is for filtering and is supposed to be easy to modify public Tuple <bool, string> Auth_ChangePasswordModelValidation(Auth_ChangeUserPasswordModel changeUserPasswordModel) { string[] stringsToValidate = { changeUserPasswordModel.currentPassword, changeUserPasswordModel.newPassword, }; Tuple <bool, string> doneGeneralValidation = GeneralInputChecker(stringsToValidate); Tuple <bool, string> donePasswordValidation = PasswordInputChecker(changeUserPasswordModel.newPassword); if (!donePasswordValidation.Item1) { return(donePasswordValidation); } if (!doneGeneralValidation.Item1) { return(doneGeneralValidation); } return(Tuple.Create(true, String.Empty)); }