using Flawless.Api; using Flawless.Server.Utility; using Google.Protobuf.WellKnownTypes; using Grpc.Core; using Microsoft.AspNetCore.Authorization; namespace Flawless.Server.Services; public class AuthService : Auth.AuthBase { private ILogger _logger; public AuthService(ILogger logger) { _logger = logger; } public override Task GainToken(AuthRequest request, ServerCallContext context) { if (request.UserName != "admin") { return Task.FromResult(new AuthResult() { Token = "", Result = -1, Message = "Invalid username or password" }); } var token = AuthUtility.GenerateJwtToken(request.UserName, request.Expires); _logger.LogInformation($"User '{request.UserName}' has been login in.'"); return Task.FromResult(new AuthResult { Token = token, Result = 0 }); } [Authorize] public override Task GetUserInfo(Empty request, ServerCallContext context) { return Task.FromResult(new AuthUserInfo { UserName = context.GetHttpContext().User.Identity?.Name ?? string.Empty, IsSystemAdmin = true, UserId = 1000 }); } [Authorize] public override Task Validate(Empty request, ServerCallContext context) { return Task.FromResult(new Empty()); } }