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;
}
}
}
}