using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using Abp.Configuration.Startup; using Abp.MultiTenancy; using Abp.Runtime; using Abp.Runtime.Session; namespace IwbZero.Runtime.Session { public class IwbSession : ClaimsAbpSession, IIwbSession { public IwbSession( IPrincipalAccessor principalAccessor, IMultiTenancyConfig multiTenancy, ITenantResolver tenantResolver, IAmbientScopeProvider sessionOverrideScopeProvider) : base(principalAccessor, multiTenancy, tenantResolver, sessionOverrideScopeProvider) { } public string UserName { get { Claim claim = GetClaim(IwbClaimTypes.UserName); return claim?.Value ?? ""; } } public string PhoneNumber { get { Claim claim = GetClaim(IwbClaimTypes.PhoneNumber); return claim?.Value ?? ""; } } public string RealName { get { Claim claim = GetClaim(IwbClaimTypes.RealName); return claim?.Value ?? ""; } } public string EmailAddress { get { Claim claim = GetClaim(IwbClaimTypes.EmailAddress); return claim?.Value ?? ""; } } public string AvatarImagePath { get { Claim claim = GetClaim(IwbClaimTypes.AvatarImagePath); return claim?.Value ?? ""; } } public string AccountNo { get { Claim claim = GetClaim(IwbClaimTypes.AccountNo); return claim?.Value ?? ""; } } public int? UserType { get { Claim claim = GetClaim(IwbClaimTypes.UserType); if (string.IsNullOrEmpty(claim?.Value) || !int.TryParse(claim.Value, out var result)) return new int?(); return result; } } public int? AccountType { get { Claim claim = GetClaim(IwbClaimTypes.AccountType); if (string.IsNullOrEmpty(claim?.Value) || !int.TryParse(claim.Value, out var result)) return new int?(); return result; } } public List UserRoles { get { Claim claim = GetClaim(IwbClaimTypes.UserRoles); if (string.IsNullOrEmpty(claim?.Value)) return new List(); var result = claim.Value.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries).ToList(); return result; } } public List UserRoleIds { get { Claim claim = GetClaim(IwbClaimTypes.UserRoleIds); if (string.IsNullOrEmpty(claim?.Value)) return new List(); var result = claim.Value.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries).ToList(); return result; } } public Claim GetClaim(string type) { ClaimsPrincipal principal = PrincipalAccessor.Principal; Claim claim = principal?.Claims.FirstOrDefault(c => c.Type == type); return claim; } } }