using Blazored.LocalStorage; using Microsoft.AspNetCore.Components.Authorization; using System.Net.Http; using System.Net.Http.Json; using System.Threading.Tasks; using wispro.sp.web.Auth; using wispro.sp.web.Models; using wispro.sp.web.Utils; using System.Security.Claims; namespace wispro.sp.web.Services { public interface IUserService { CurrentUser CurrentUser { get; set; } } public class UserService : IUserService { private readonly HttpClient _httpClient; private readonly ILocalStorageService _localStorageService; private CurrentUser _CurrentUser= new CurrentUser() { Name = "" }; public UserService(HttpClient httpClient, ILocalStorageService localStorageService) { _httpClient = httpClient; _localStorageService = localStorageService; } public CurrentUser CurrentUser { get { return _CurrentUser; } set { _CurrentUser = value; } } public async Task GetUser() { CurrentUser _user = new CurrentUser(); var tokenInLocalStorage = await _localStorageService.GetItemAsStringAsync("authToken"); var claims = JwtParser.ParseClaimsFromJwt(tokenInLocalStorage); foreach (Claim claim in claims) { if (claim.Type == ClaimTypes.Name ) { _user.Name = claim.Value; break; } } return _user; } } }