36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using DysonNetwork.Shared.Proto;
 | |
| using Grpc.Core;
 | |
| 
 | |
| namespace DysonNetwork.Pass.Auth;
 | |
| 
 | |
| public class AuthServiceGrpc(
 | |
|     TokenAuthService token,
 | |
|     AuthService auth
 | |
| )
 | |
|     : Shared.Proto.AuthService.AuthServiceBase
 | |
| {
 | |
|     public override async Task<AuthenticateResponse> Authenticate(
 | |
|         AuthenticateRequest request,
 | |
|         ServerCallContext context
 | |
|     )
 | |
|     {
 | |
|         var (valid, session, message) = await token.AuthenticateTokenAsync(request.Token, request.IpAddress);
 | |
|         if (!valid || session is null)
 | |
|             return new AuthenticateResponse { Valid = false, Message = message ?? "Authentication failed." };
 | |
| 
 | |
|         return new AuthenticateResponse { Valid = true, Session = session.ToProtoValue() };
 | |
|     }
 | |
| 
 | |
|     public override async Task<ValidateResponse> ValidatePin(ValidatePinRequest request, ServerCallContext context)
 | |
|     {
 | |
|         var accountId = Guid.Parse(request.AccountId);
 | |
|         var valid = await auth.ValidatePinCode(accountId, request.Pin);
 | |
|         return new ValidateResponse { Valid = valid };
 | |
|     }
 | |
|     
 | |
|     public override async Task<ValidateResponse> ValidateCaptcha(ValidateCaptchaRequest request, ServerCallContext context)
 | |
|     {
 | |
|         var valid = await auth.ValidateCaptcha(request.Token);
 | |
|         return new ValidateResponse { Valid = valid };
 | |
|     }
 | |
| } |