namespace Netina.AdminPanel.PWA.Utilities; public class UserUtility : IUserUtility { private readonly ILocalStorageService _localStorageService; private readonly IEncryptProvider _encryptProvider; public UserUtility(ILocalStorageService localStorageService,IEncryptProvider encryptProvider) { _localStorageService = localStorageService; _encryptProvider = encryptProvider; } public async Task GetBearerTokenAsync() { var encrypted = await _localStorageService.GetItemAsStringAsync(LocalStorageKeys.Token); return await _encryptProvider.Decrypt(encrypted); } public async Task SetBearerTokenAsync(string token) { var encrypted = await _encryptProvider.Encrypt(token); await _localStorageService.SetItemAsStringAsync(LocalStorageKeys.Token, encrypted); } public async Task GetUserAsync() { var encryptedUser = await _localStorageService.GetItemAsync(LocalStorageKeys.UserInfo); return await _encryptProvider.Decrypt(encryptedUser); } public async Task SetUserAsync(ApplicationUserSDto user) { var encryptedUser = await _encryptProvider.Encrypt(user); await _localStorageService.SetItemAsync(LocalStorageKeys.UserInfo, encryptedUser); } public async Task SetPermissionsAsync(List permissions) { var encrypted = await _encryptProvider.Encrypt(permissions); await _localStorageService.SetItemAsync(LocalStorageKeys.UserPermissions,encrypted); } public async Task?> GetPermissionsAsync() { var encrypted = await _localStorageService.GetItemAsync(LocalStorageKeys.UserPermissions); return await _encryptProvider.Decrypt>(encrypted); } public async Task HasPermissionAsync(string permission) { var permissions = await GetPermissionsAsync(); if (permissions == null) return false; return permissions.Exists(p => p == permission); } public async Task LogoutAsync() { await _localStorageService.RemoveItemAsync(LocalStorageKeys.Token); await _localStorageService.RemoveItemAsync(LocalStorageKeys.UserInfo); await _localStorageService.RemoveItemAsync(LocalStorageKeys.UserPermissions); } //public AccessToken? AccessToken { get; set; } //public List UserClaims => AccessToken == null ? new List() : AccessToken.Permissions; //public bool HasPermissionTo(string permission) => UserClaims.Any(c => c == permission); }