using Ropin.Inspection.Common.Accessor.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Text; using System.Threading.Tasks; namespace Ropin.Inspection.Common.Accessor { public class ClaimsAccessor : IClaimsAccessor { protected IPrincipalAccessor PrincipalAccessor { get; } public ClaimsAccessor(IPrincipalAccessor principalAccessor) { PrincipalAccessor = principalAccessor; } /// /// 登录用户ID /// public Guid ApiUserId { get { var userId = PrincipalAccessor.Principal?.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value; if (userId != null) { return Guid.Parse(userId); }else { throw new Exception("登录用户ID不存在"); } //return Guid.Empty; } } /// /// 登录用户名称 /// public string ApiUserName { get { var userName = PrincipalAccessor.Principal?.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name)?.Value; if (string.IsNullOrWhiteSpace(userName)) { return string.Empty; } return userName; } } /// /// 用户角色Id /// public string RoleIds { get { var roleIds = PrincipalAccessor.Principal?.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Role)?.Value; if (string.IsNullOrWhiteSpace(roleIds)) { return string.Empty; } return roleIds; } } /// /// 组织架构ID /// public Guid OrganizeId { get { var primaryGroupSid = PrincipalAccessor.Principal?.Claims.FirstOrDefault(c => c.Type == ClaimTypes.PrimaryGroupSid)?.Value; if (!string.IsNullOrEmpty(primaryGroupSid) ) { return Guid.Parse(primaryGroupSid); } else { throw new Exception("组织架构不存在"); } } } /// /// LinsenceCode /// public string Linsence { get { var primaryLinsence = PrincipalAccessor.Principal?.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Rsa)?.Value; if (string.IsNullOrEmpty(primaryLinsence)) { //throw new Exception("LinsenceCode不存在"); return null; } else { return primaryLinsence; } } } /// /// LicenseTypeCode /// public string LicenseTypeCode { get { var licenseTypeCode = PrincipalAccessor.Principal?.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid)?.Value; if (string.IsNullOrEmpty(licenseTypeCode)) { //throw new Exception("LicenseTypeCode不存在"); return null; } else { return licenseTypeCode; } } } /// /// 用户组织架构类型 /// public string OrgTypeCode { get { var orgTypeCode = PrincipalAccessor.Principal?.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Actor)?.Value; if (string.IsNullOrEmpty(orgTypeCode)) { throw new Exception("组织架构类型不存在"); } else { return orgTypeCode; } } } } }