using Features.Auth.Dtos;
using Features.Auth.Services;
using MediatR;
namespace Features.Auth.Commands.RefreshToken;
///
/// Handles by validating the refresh token and issuing a new
/// access/refresh token pair.
///
/// Service used to validate and exchange the refresh token.
public class RefreshTokenHandler(ITokenService tokenService)
: IRequestHandler
{
public async Task Handle(
RefreshTokenCommand request,
CancellationToken cancellationToken
)
{
RefreshTokenResult result = await tokenService.RefreshTokenAsync(request.RefreshToken);
return new LoginPayload(
result.UserAccount.UserAccountId,
result.UserAccount.Username,
result.RefreshToken,
result.AccessToken
);
}
}