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)); }