Beispiel #1
0
    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" }
        });
    }
Beispiel #2
0
    public async Task <ActionResult <UserResponse> > RecoveryTokenGeneration(RecoveryTokenGenerationRequest request)
    {
        var recoveryGenerateResponse = await _userService.GenerateRecoveryToken(request);

        if (!recoveryGenerateResponse.Success)
        {
            return(BadRequest(recoveryGenerateResponse.Errors));
        }

        return(recoveryGenerateResponse.Object);
    }