public async ValueTask <IActionResult> Put([FromBody] PatchKnownPasswordDTO model) { if (ModelState.IsValid) { var(succeeded, user, error) = await _acc.ChangePassword(model); if (succeeded) { return(Ok(new { succeeded })); } return(BadRequest(new { Message = error })); } return(BadRequest(new { Errors = ModelState.Values.SelectMany(e => e.Errors).ToList() })); }
public async ValueTask <bool> ChangePassword(PatchKnownPasswordDTO patch) { ApplicationUser user = await GetUserById(patch.Id); if (user != null) { string passwordHash = Hash.GetHashedValue(patch.OldPassword); if (passwordHash == user.PasswordHash) { string newHashedPassword = Hash.GetHashedValue(patch.NewPassword); user.PasswordHash = newHashedPassword; return(await UpdateUser(user)); } } return(false); }
public async ValueTask <(bool, ApplicationUser, string)> ChangePassword(PatchKnownPasswordDTO patch) { ApplicationUser user = await FindOne(u => u.Id == patch.Id); if (user != null) { string passwordHash = Hash.GetHashedValue(patch.OldPassword); if (passwordHash == user.PasswordHash) { string newHashedPassword = Hash.GetHashedValue(patch.NewPassword); user.PasswordHash = newHashedPassword; return(await Update(user)); } } return(false, null, "user not found"); }