diff --git a/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQuery.cs b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQuery.cs new file mode 100644 index 0000000..26f2042 --- /dev/null +++ b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQuery.cs @@ -0,0 +1,9 @@ +namespace CMSMicroservice.Application.UserCQ.Queries.AdminGetJwtToken; +public record AdminGetJwtTokenQuery : IRequest +{ + //نام کاربری + public string Username { get; init; } + //کلمه عبور + public string Password { get; init; } + +} \ No newline at end of file diff --git a/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryHandler.cs b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryHandler.cs new file mode 100644 index 0000000..b7b7b1b --- /dev/null +++ b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryHandler.cs @@ -0,0 +1,16 @@ +namespace CMSMicroservice.Application.UserCQ.Queries.AdminGetJwtToken; +public class AdminGetJwtTokenQueryHandler : IRequestHandler +{ + private readonly IApplicationDbContext _context; + + public AdminGetJwtTokenQueryHandler(IApplicationDbContext context) + { + _context = context; + } + + public async Task Handle(AdminGetJwtTokenQuery request, CancellationToken cancellationToken) + { + //TODO: Implement your business logic + return new AdminGetJwtTokenResponseDto(); + } +} diff --git a/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryValidator.cs b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryValidator.cs new file mode 100644 index 0000000..f4cac21 --- /dev/null +++ b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenQueryValidator.cs @@ -0,0 +1,18 @@ +namespace CMSMicroservice.Application.UserCQ.Queries.AdminGetJwtToken; +public class AdminGetJwtTokenQueryValidator : AbstractValidator +{ + public AdminGetJwtTokenQueryValidator() + { + RuleFor(model => model.Username) + .NotEmpty(); + RuleFor(model => model.Password) + .NotEmpty(); + } + public Func>> ValidateValue => async (model, propertyName) => + { + var result = await ValidateAsync(ValidationContext.CreateWithOptions((AdminGetJwtTokenQuery)model, x => x.IncludeProperties(propertyName))); + if (result.IsValid) + return Array.Empty(); + return result.Errors.Select(e => e.ErrorMessage); + }; +} diff --git a/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenResponseDto.cs b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenResponseDto.cs new file mode 100644 index 0000000..c06c0d0 --- /dev/null +++ b/src/CMSMicroservice.Application/UserCQ/Queries/AdminGetJwtToken/AdminGetJwtTokenResponseDto.cs @@ -0,0 +1,7 @@ +namespace CMSMicroservice.Application.UserCQ.Queries.AdminGetJwtToken; +public class AdminGetJwtTokenResponseDto +{ + //توکن + public string Token { get; set; } + +} \ No newline at end of file diff --git a/src/CMSMicroservice.Domain/Entities/User.cs b/src/CMSMicroservice.Domain/Entities/User.cs index be29a9d..2cb98d7 100644 --- a/src/CMSMicroservice.Domain/Entities/User.cs +++ b/src/CMSMicroservice.Domain/Entities/User.cs @@ -34,16 +34,18 @@ public class User : BaseAuditableEntity public bool PushNotifications { get; set; } //تاریخ تولد public DateTime? BirthDate { get; set; } + //پسوورد هش کاربر + public string? HashPassword { get; set; } //UserAddress Collection Navigation Reference public virtual ICollection UserAddresss { get; set; } //UserRole Collection Navigation Reference public virtual ICollection UserRoles { get; set; } - //User Collection Navigation Reference - public virtual ICollection Users { get; set; } //UserWallet Collection Navigation Reference public virtual ICollection UserWallets { get; set; } //UserCarts Collection Navigation Reference public virtual ICollection UserCartss { get; set; } //UserOrder Collection Navigation Reference public virtual ICollection UserOrders { get; set; } + //User Collection Navigation Reference + public virtual ICollection Users { get; set; } } diff --git a/src/CMSMicroservice.Protobuf/Protos/user.proto b/src/CMSMicroservice.Protobuf/Protos/user.proto index 858d39f..4ae9071 100644 --- a/src/CMSMicroservice.Protobuf/Protos/user.proto +++ b/src/CMSMicroservice.Protobuf/Protos/user.proto @@ -49,6 +49,12 @@ service UserContract }; }; + rpc AdminGetJwtToken(AdminGetJwtTokenRequest) returns (AdminGetJwtTokenResponse){ + option (google.api.http) = { + get: "/AdminGetJwtToken" + + }; + }; } message CreateNewUserRequest { @@ -159,3 +165,12 @@ message GetJwtTokenResponse { string token = 1; } +message AdminGetJwtTokenRequest +{ + string username = 1; + string password = 2; +} +message AdminGetJwtTokenResponse +{ + string token = 1; +} diff --git a/src/CMSMicroservice.Protobuf/Validator/User/AdminGetJwtTokenRequestValidator.cs b/src/CMSMicroservice.Protobuf/Validator/User/AdminGetJwtTokenRequestValidator.cs new file mode 100644 index 0000000..2b7cb8a --- /dev/null +++ b/src/CMSMicroservice.Protobuf/Validator/User/AdminGetJwtTokenRequestValidator.cs @@ -0,0 +1,21 @@ +using FluentValidation; +using CMSMicroservice.Protobuf.Protos.User; +namespace CMSMicroservice.Protobuf.Validator.User; + +public class AdminGetJwtTokenRequestValidator : AbstractValidator +{ + public AdminGetJwtTokenRequestValidator() + { + RuleFor(model => model.Username) + .NotEmpty(); + RuleFor(model => model.Password) + .NotEmpty(); + } + public Func>> ValidateValue => async (model, propertyName) => + { + var result = await ValidateAsync(ValidationContext.CreateWithOptions((AdminGetJwtTokenRequest)model, x => x.IncludeProperties(propertyName))); + if (result.IsValid) + return Array.Empty(); + return result.Errors.Select(e => e.ErrorMessage); + }; +} diff --git a/src/CMSMicroservice.WebApi/Services/UserService.cs b/src/CMSMicroservice.WebApi/Services/UserService.cs index e0a1fb0..f5a8d05 100644 --- a/src/CMSMicroservice.WebApi/Services/UserService.cs +++ b/src/CMSMicroservice.WebApi/Services/UserService.cs @@ -6,6 +6,7 @@ using CMSMicroservice.Application.UserCQ.Commands.DeleteUser; using CMSMicroservice.Application.UserCQ.Queries.GetUser; using CMSMicroservice.Application.UserCQ.Queries.GetAllUserByFilter; using CMSMicroservice.Application.UserCQ.Queries.GetJwtToken; +using CMSMicroservice.Application.UserCQ.Queries.AdminGetJwtToken; namespace CMSMicroservice.WebApi.Services; public class UserService : UserContract.UserContractBase { @@ -39,4 +40,8 @@ public class UserService : UserContract.UserContractBase { return await _dispatchRequestToCQRS.Handle(request, context); } + public override async Task AdminGetJwtToken(AdminGetJwtTokenRequest request, ServerCallContext context) + { + return await _dispatchRequestToCQRS.Handle(request, context); + } }