using FrontOffice.BFF.Application.Common.Interfaces;
using Mapster;
using MediatR;
namespace FrontOffice.BFF.Application.UserCQ.Commands.RefreshToken;
///
/// هندلر رفرش توکن - فراخوانی CMS برای دریافت توکن جدید
///
public class RefreshTokenCommandHandler : IRequestHandler
{
private readonly IApplicationContractContext _context;
public RefreshTokenCommandHandler(IApplicationContractContext context)
{
_context = context;
}
public async Task Handle(RefreshTokenCommand request, CancellationToken cancellationToken)
{
try
{
var cmsRequest = new CMSMicroservice.Protobuf.Protos.User.RefreshTokenRequest
{
CurrentToken = request.CurrentToken
};
var response = await _context.User.RefreshTokenAsync(cmsRequest, cancellationToken: cancellationToken);
return new RefreshTokenResponseDto
{
Token = response.Token,
Success = response.Success,
Message = response.Message
};
}
catch (Exception ex)
{
return new RefreshTokenResponseDto
{
Success = false,
Message = $"خطا در رفرش توکن: {ex.Message}",
Token = string.Empty
};
}
}
}