Ejemplo n.º 1
0
        public async Task <IActionResult> Refresh([FromBody] RefreshRequest refreshRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequestState());
            }

            bool isValidRefreshToken = _refreshTokenValidator.Validate(refreshRequest.RefreshToken);

            if (!isValidRefreshToken)
            {
                return(BadRequest(new ErrorResponse("Invalid refresh token")));
            }

            RefreshToken refreshTokenDTO = await _refreshTokenRepository.GetByToken(refreshRequest.RefreshToken);

            if (refreshTokenDTO == null)
            {
                return(NotFound(new ErrorResponse("Invalid refresh token")));
            }

            _refreshTokenRepository.Delete(refreshTokenDTO.Id);

            User user = await _userRepository.GetById(refreshTokenDTO.UserId);

            if (user == null)
            {
                return(NotFound(new ErrorResponse("User not found")));
            }

            AuthenticatedUserResponse response = await _authenticator.Authenticate(user);

            return(Ok(response));
        }