Generator Changes at 9/27/2025 11:50:52 PM

This commit is contained in:
MeysamMoghaddam
2025-09-27 23:59:05 +03:30
parent ec6ab8258a
commit 6fd9472f2b
11 changed files with 165 additions and 1 deletions

View File

@@ -0,0 +1,5 @@
namespace CMSMicroservice.Application.Common.Interfaces;
public interface IGenerateJwtToken
{
Task<string> GenerateJwtToken(User user);
}

View File

@@ -0,0 +1,7 @@
namespace CMSMicroservice.Application.UserCQ.Queries.GetJwtToken;
public record GetJwtTokenQuery : IRequest<GetJwtTokenResponseDto>
{
//شناسه
public long Id { get; init; }
}

View File

@@ -0,0 +1,22 @@
namespace CMSMicroservice.Application.UserCQ.Queries.GetJwtToken;
public class GetJwtTokenQueryHandler : IRequestHandler<GetJwtTokenQuery, GetJwtTokenResponseDto>
{
private readonly IApplicationDbContext _context;
private readonly IGenerateJwtToken _generateJwt;
public GetJwtTokenQueryHandler(IApplicationDbContext context, IGenerateJwtToken generateJwt)
{
_context = context;
_generateJwt = generateJwt;
}
public async Task<GetJwtTokenResponseDto> Handle(GetJwtTokenQuery request, CancellationToken cancellationToken)
{
var user = await _context.Users
.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken) ?? throw new NotFoundException(nameof(User), request.Id);
return new GetJwtTokenResponseDto()
{
Token = await _generateJwt.GenerateJwtToken(user),
};
}
}

View File

@@ -0,0 +1,16 @@
namespace CMSMicroservice.Application.UserCQ.Queries.GetJwtToken;
public class GetJwtTokenQueryValidator : AbstractValidator<GetJwtTokenQuery>
{
public GetJwtTokenQueryValidator()
{
RuleFor(model => model.Id)
.NotNull();
}
public Func<object, string, Task<IEnumerable<string>>> ValidateValue => async (model, propertyName) =>
{
var result = await ValidateAsync(ValidationContext<GetJwtTokenQuery>.CreateWithOptions((GetJwtTokenQuery)model, x => x.IncludeProperties(propertyName)));
if (result.IsValid)
return Array.Empty<string>();
return result.Errors.Select(e => e.ErrorMessage);
};
}

View File

@@ -0,0 +1,7 @@
namespace CMSMicroservice.Application.UserCQ.Queries.GetJwtToken;
public class GetJwtTokenResponseDto
{
//توکن
public string Token { get; set; }
}