public async Task <string> ResetPw(ResetPwReq model) { string response = await Task.Run(() => { var user = _users.Find <UserMod>(user => user.Email == model.Email && user.ResetKey == model.Key && user.ResetKey != null).FirstOrDefault(); // return false if user not found or wrong password if (user == null) { return("invalid_key"); } var hash = BCrypt.Net.BCrypt.HashPassword(model.Password); var filter = Builders <UserMod> .Filter.Eq("email", model.Email); var update = Builders <UserMod> .Update.Set("password", hash) .Set("resetKey", BsonNull.Value); UpdateResult db_res = _users.UpdateOne(filter, update); if (db_res.ModifiedCount > 0) { return("success"); } else { return("error"); } }); return(response); }
public async Task <IActionResult> PwResetJson([FromBody] ResetPwReq model) { string response = await _userService.ResetPw(model); if (response == "invalid_key") { return(BadRequest(new { message = "Account not found!", status = "failed" })); } else if (response == "error") { return(BadRequest(new { message = "Server Error! Please try again later.", status = "error" })); } else { return(Ok(new { msg = "Your password has been reset.", status = "success" })); } }