public async Task <ActionResult <ExchangeRefreshTokenResponseDto> > GenerateRefreshToken( [FromQuery] ExchangeRefreshTokenRequestDto request) { var claimsPrincipal = _jwtTokenValidator.GetPrincipalFromToken(request.AccessToken, _authSettings.SecretKey); if (claimsPrincipal == null) { return(BadRequest()); } var userId = claimsPrincipal.Claims.First(c => c.Type == "id"); var user = await _mediator.Send(new GetUserByIdQuery(Guid.Parse(userId.Value))); if (!user.HasValidRefreshToken(request.RefreshToken)) { return(BadRequest()); } var jwtToken = await _jwtFactory.GenerateEncodedToken(user); var refreshToken = _tokenFactory.GenerateToken(); await _mediator.Publish(new ExchangeRefreshTokenCommand( user.Id, refreshToken, request.RefreshToken)); return(Ok(new ExchangeRefreshTokenResponseDto(jwtToken, refreshToken, true))); }
public async Task <ActionResult <ExchangeRefreshTokenResponseDto> > RefreshToken([FromBody] ExchangeRefreshTokenRequestDto request, [FromServices] IExchangeRefreshTokenUseCase useCase) { var result = await useCase.Handle(new ExchangeRefreshTokenRequest(request.AccessToken, request.RefreshToken, HttpContext.Connection.RemoteIpAddress?.ToString())); if (useCase.HasError) { return(useCase.ToActionResult()); } return(new ExchangeRefreshTokenResponseDto(result !.AccessToken, result.RefreshToken)); }