public async Task <ObjectResult <UserResponse> > GenerateRecoveryToken(RecoveryTokenGenerationRequest request) { var user = await _userRepository.GetUserByEmail(request.Email); if (user == null) { return(new ObjectResult <UserResponse> { Errors = new[] { $"Couldn't find user with email: {request.Email}" } }); } _userRepository.Update(user); user.RecoveryToken = Guid.NewGuid().ToString(); var sendConfirmationResponse = await _mailService.SendPasswordResetEmailTo(user); if (sendConfirmationResponse.StatusCode != HttpStatusCode.Accepted) { user.RecoveryToken = null; } if (await _userRepository.SaveChangesAsync()) { return(new ObjectResult <UserResponse> { Success = true, Object = _mapper.Map <UserResponse>(user) }); } return(new ObjectResult <UserResponse> { Errors = new[] { "No rows were affected" } }); }
public async Task <ActionResult <UserResponse> > RecoveryTokenGeneration(RecoveryTokenGenerationRequest request) { var recoveryGenerateResponse = await _userService.GenerateRecoveryToken(request); if (!recoveryGenerateResponse.Success) { return(BadRequest(recoveryGenerateResponse.Errors)); } return(recoveryGenerateResponse.Object); }