using Admin.Core.Common.BaseModel; using Admin.Core.Common.Helpers; using Microsoft.AspNetCore.Http; using System; namespace Admin.Core.Common.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 Name { get { var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserName); if (name != null && name.Value.NotNull()) { return name.Value; } return ""; } } /// /// 昵称 /// public string NickName { get { var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.UserNickName); 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 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; } } } }