using System.Security.Claims; using Abp.Runtime.Session; using VberZero.Authorization; using VberZero.BaseSystem.Users; namespace VberZero.Session; public static class VzSessionExtensions { public static bool IsUser(this IVzSession session, User user) { if (session == null) { throw new ArgumentNullException(nameof(session)); } if (user == null) { throw new ArgumentNullException(nameof(user)); } return session.TenantId == user.TenantId && session.UserId.HasValue && session.UserId.Value == user.Id; } public static string GetUserName(this IVzSession session) { return GetClaimValue(session, VzClaimTypes.UserName); } public static string GetAccountNo(this IVzSession session) { return GetClaimValue(session, VzClaimTypes.AccountNo); } public static VzDefinition.AccountType GetAccountType(this IVzSession session) { try { var temp = GetClaimValue(session, VzClaimTypes.AccountType); if (temp != null) { return (VzDefinition.AccountType)temp; } } catch { // } return default; } public static VzDefinition.UserType GetUserType(this IVzSession session) { try { var temp = GetClaimValue(session, VzClaimTypes.UserType); if (temp != null) { return (VzDefinition.UserType)temp; } } catch { // } return default; } public static T? GetClaimValue(this IVzSession session, string claimTypes) where T : struct { var claimValue = GetClaimValue(session, claimTypes); if (string.IsNullOrEmpty(claimValue)) return null; var result = (T)Convert.ChangeType(claimValue, typeof(T)); return result; } public static string GetClaimValue(this IVzSession session, string claimTypes) { var claim = session.GetClaimValueStr(claimTypes); return claim ?? ""; } public static Claim GetClaim(string type) { ClaimsPrincipal principal = DefaultPrincipalAccessor.Instance.Principal; Claim claim = principal?.Claims.FirstOrDefault(c => c.Type == type); return claim; } }