using Microsoft.AspNetCore.Http; using System; using ZhonTai.Common.Extensions; using ZhonTai.Admin.Core.Entities; using ZhonTai.Admin.Domain.User; namespace ZhonTai.Admin.Core.Auth; /// /// 用户信息 /// public class User : IUser { private readonly IHttpContextAccessor _accessor; public User(IHttpContextAccessor accessor) { _accessor = accessor; } /// /// 用户Id /// public virtual long Id { get { var id = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserId); if (id != null && id.Value.NotNull()) { return id.Value.ToLong(); } return 0; } } /// /// 用户名 /// public string UserName { get { var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserName); if (name != null && name.Value.NotNull()) { return name.Value; } return ""; } } /// /// 姓名 /// public string Name { get { var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.Name); if (name != null && name.Value.NotNull()) { return name.Value; } return ""; } } /// /// 租户Id /// public virtual long? TenantId { get { var tenantId = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.TenantId); if (tenantId != null && tenantId.Value.NotNull()) { return tenantId.Value.ToLong(); } return null; } } /// /// 用户类型 /// public virtual UserType Type { get { var userType = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserType); if (userType != null && userType.Value.NotNull()) { return (UserType)Enum.Parse(typeof(UserType), userType.Value, true); } return UserType.DefaultUser; } } /// /// 默认用户 /// public virtual bool DefaultUser { get { return Type == UserType.DefaultUser; } } /// /// 平台管理员 /// public virtual bool PlatformAdmin { get { return Type == UserType.PlatformAdmin; } } /// /// 租户管理员 /// public virtual bool TenantAdmin { get { return Type == UserType.TenantAdmin; } } /// /// 租户类型 /// public virtual TenantType? TenantType { get { var tenantType = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.TenantType); if (tenantType != null && tenantType.Value.NotNull()) { return (TenantType)Enum.Parse(typeof(TenantType), tenantType.Value, true); } return null; } } /// /// 数据隔离类型 /// public virtual DataIsolationType? DataIsolationType { get { var dataIsolationType = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.DataIsolationType); if (dataIsolationType != null && dataIsolationType.Value.NotNull()) { return (DataIsolationType)Enum.Parse(typeof(DataIsolationType), dataIsolationType.Value, true); } return null; } } }