| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using Grpc.Net.Client;
- using GrpcShared.DTO.Auth;
- using GrpcShared.Interfaces;
- using NemAnBlazor.Services.Interfaces;
- using ProtoBuf.Grpc.Client;
- using GrpcShared;
- using GrpcShared.DTO.User;
- using GrpcShared.DTO;
- using System.Security.Claims;
- using Microsoft.AspNetCore.Components.Authorization;
- using Blazored.SessionStorage;
-
- namespace NemAnBlazor.Services
- {
- public class AuthClientService : AuthenticationStateProvider, IAuthClientService
- {
-
- private IAuthService _serviceClient;
- private ISessionStorageService _sessionStorage;
- public AuthClientService(GrpcChannel grpcChannel, ISessionStorageService sessionStorage)
- {
- _serviceClient = grpcChannel.CreateGrpcService<IAuthService>();
- _sessionStorage = sessionStorage;
- }
- public async Task<TokenResponse> GetAccessToken(TokenRequest request)
- {
- return await _serviceClient.GetAccessToken(request);
- }
-
- public override async Task<AuthenticationState> GetAuthenticationStateAsync()
- {
- string token = await _sessionStorage.GetItemAsync<string>("token");
-
- //token = "BQBMgFm6jnFNWWeZEMGIRP_f-ENPid7Kw8JubAyuWAe4JK0S1DPFGlaAdZ_Fey6ePkCnz8-cqC0oyRmrciWUy5ISUTQKDe8PTQn4iBRMYCgM0n4GnS1xAErHJcm4Vpu2TAngk-4vQUOfTQRcedNTfCaHKP4uFJgTlTI7JHGrtB-_EZLnFcZ2OQe31oFQIJ1wM3ZtvwnN";
- if (token == null) return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
-
- var userInfo = await _serviceClient.GetUserInfo(new TokenMessage ( token ));
-
- List<Claim> claims = new();
-
- claims.Add(new Claim("email", userInfo.email!));
- claims.Add(new Claim("id", userInfo.id!));
- claims.Add(new Claim("name", userInfo.display_name!));
-
- ClaimsIdentity identity = new(claims, "jwt");
- //ClaimsIdentity identity = new();
- ClaimsPrincipal user = new(identity);
- AuthenticationState state = new(user);
-
- NotifyAuthenticationStateChanged(Task.FromResult(state));
-
- return state;
- }
-
- public async Task<CodeRequest> GetAuthParams()
- {
- return await _serviceClient.GetAuthParams();
- }
-
- public async Task<UserInfoResponse> GetUserInfo(TokenMessage token)
- {
- return await _serviceClient.GetUserInfo(token);
- }
-
- public override async Task<AuthenticationState> GetAuthenticationStateAsync()
- {
- await Task.Delay(1500);
-
- string token = await _sessionStorage.GetItemAsync<string>("token");
-
- //token = "BQBMgFm6jnFNWWeZEMGIRP_f-ENPid7Kw8JubAyuWAe4JK0S1DPFGlaAdZ_Fey6ePkCnz8-cqC0oyRmrciWUy5ISUTQKDe8PTQn4iBRMYCgM0n4GnS1xAErHJcm4Vpu2TAngk-4vQUOfTQRcedNTfCaHKP4uFJgTlTI7JHGrtB-_EZLnFcZ2OQe31oFQIJ1wM3ZtvwnN";
- if (token == null) return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
-
- var userInfo = await _serviceClient.GetUserInfo(new TokenMessage { Token = token });
-
- List<Claim> claims = new();
-
- claims.Add(new Claim("email", userInfo.email!));
- claims.Add(new Claim("id", userInfo.id!));
- claims.Add(new Claim("name", userInfo.display_name!));
-
- ClaimsIdentity identity = new(claims, "jwt");
- //ClaimsIdentity identity = new();
- ClaimsPrincipal user = new(identity);
- AuthenticationState state = new(user);
-
- NotifyAuthenticationStateChanged(Task.FromResult(state));
-
- return state;
- }
- }
- }
|