| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- 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.LocalStorage;
-
- namespace NemAnBlazor.Services
- {
- public class AuthClientService : AuthenticationStateProvider, IAuthClientService
- {
-
- private IAuthService _serviceClient;
- private ILocalStorageService _localStorage;
- public AuthClientService(GrpcChannel grpcChannel, ILocalStorageService sessionStorage)
- {
- _serviceClient = grpcChannel.CreateGrpcService<IAuthService>();
- _localStorage = sessionStorage;
- }
- public async Task<TokenResponse> GetAccessToken(TokenRequest request)
- {
- return await _serviceClient.GetAccessToken(request);
- }
-
- //public override async Task<AuthenticationState> GetAuthenticationStateAsync()
- //{
- // string token = await _localStorage.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;
- //}
-
- 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()
- {
- //return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
- await Task.Delay(500);
-
- string token = await _localStorage.GetItemAsync<string>("token");
- string refreshT = await _localStorage.GetItemAsync<string>("refresh_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, RefreshToken = refreshT });
-
- List<Claim> claims = new();
-
- claims.Add(new Claim("email", userInfo.Email!));
- claims.Add(new Claim("id", userInfo.Id!));
- claims.Add(new Claim("name", userInfo.DisplayName!));
-
- 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<RefreshTokenResponse> RefreshAccessToken(TokenMessage token)
- {
- return await _serviceClient.RefreshAccessToken(token);
- }
- }
- }
|