public async Task <IActionResult> UpdatePassword([FromBody] ForgotPasswordInput input) { var forgotPasswordInfo = await ForgotPasswordInfoRepository .FirstOrDefaultAsync(f => f.Hash == input.Hash && f.ExpirationTime >= DateTime.Now); if (forgotPasswordInfo == null || forgotPasswordInfo.Hash != input.Hash) { return(NoContent()); } var user = await UserRepository.FindAsync(forgotPasswordInfo.UserId); if (user == null) { return(NoContent()); } PasswordManager.CreatePasswordSaltAndHash(input.Password, out var passwordSalt, out var passwordHash); user.PasswordSalt = passwordSalt; user.PasswordHash = passwordHash; UserRepository.Update(user); ForgotPasswordInfoRepository.Remove(forgotPasswordInfo); await _userContext.SaveChangesAsync(); return(Ok()); }
private async Task <RegisterOutput> TryInsertUser(RegisterInput input) { var output = new RegisterOutput(); var userToAdd = _mapper.Map <ApplicationUser>(input); PasswordManager.CreatePasswordSaltAndHash(input.Password, out var passwordSalt, out var passwordHash); userToAdd.PasswordSalt = passwordSalt; userToAdd.PasswordHash = passwordHash; var userSaved = await UserRepository.AddAsync(userToAdd); await _userContext.SaveChangesAsync(); output.Result = RegisterOutputResult.Success; output.UserId = userSaved.Entity.Id; return(output); }