public async ValueTask <bool> ForgotPassword(PatchUnknownPassword patch) { ApplicationUser user = await GetUserByEmail(patch.Email); if (user != null) { if (patch.NewPassword == patch.ConfirmNewPassword) { string passwordHash = Hash.GetHashedValue(patch.NewPassword); user.PasswordHash = passwordHash; return(await UpdateUser(user)); } } return(false); }
public async ValueTask <IActionResult> Put(string code, [FromBody] PatchUnknownPassword model) { if (ModelState.IsValid) { var user = await _repo.Item().Where(u => u.Email.Equals(model.Email)).FirstOrDefaultAsync(); if (user != null) { if (code == user.Code && user.CodeIssued <= user.CodeWillExpire) { bool succeeded = await _acc.ForgotPassword(model); if (succeeded) { return(Ok(new { succeeded })); } } return(BadRequest(new { Message = "code is invalid or has expired" })); } return(BadRequest(new { Message = "user not found" })); } return(BadRequest(new { Errors = ModelState.Values.SelectMany(e => e.Errors).ToList() })); }