using System.Security.Authentication;
using System.Security.Claims;
using IdentityModel;
using Microsoft.AspNetCore.Http;
using XF.Domain.Authentications;
using XF.Domain.Dependency;
namespace Hotline.Tests.Controller;
public class TestSessionContext : ISessionContext, IScopeDependency
{
private readonly IHttpContextAccessor _contextAccessor;
public TestSessionContext(IHttpContextAccessor httpContextAccessor)
{
_contextAccessor = httpContextAccessor;
//Roles = user.Claims.Where(d => d.Type == JwtClaimTypes.Role).Select(d => d.Value).ToArray();
}
private HttpContext _content = new DefaultHttpContext();
private HttpContext GetContext()
{
return _contextAccessor.HttpContext;
}
public HttpContext? HttpContext { get => GetContext(); set => _content = value; }
public string? OpenId { get { return _contextAccessor.HttpContext.User.FindFirstValue(AppClaimTypes.OpenId); } init { } }
///
/// Id of current tenant or null for host
///
public string? UserId
{
get { return _contextAccessor.HttpContext?.User.FindFirstValue(ClaimTypes.NameIdentifier); }
init { }
}
///
/// Id of current user or throw Exception for guest
///
///
public string RequiredUserId => _contextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
public string? UserName
{
get { return _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.UserDisplayName); }
init { }
}
public string? Phone
{
get { return _contextAccessor.HttpContext.User.FindFirstValue(JwtClaimTypes.PhoneNumber); }
init { }
}
///
/// Roles
///
public string[] Roles
{
get { return _contextAccessor.HttpContext?.User.Claims.Where(d => d.Type == JwtClaimTypes.Role).Select(d => d.Value).ToArray(); }
init { }
}
public string? OrgId
{
get { return _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.DepartmentId); }
init { }
}
public string RequiredOrgId => _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.DepartmentId);
public string? OrgName
{
get { return _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.DepartmentName); }
init { }
}
public int OrgLevel
{
get { return _contextAccessor.HttpContext?.User.FindIntValue(AppClaimTypes.DepartmentLevel) ?? 0; }
init { }
}
public string? OrgAreaCode
{
get { return _contextAccessor.HttpContext.User.FindFirstValue(AppClaimTypes.DepartmentAreaCode); }
init { }
}
public bool OrgIsCenter
{
get { return _contextAccessor.HttpContext.User.FindBoolValue(AppClaimTypes.DepartmentIsCenter); }
init { }
}
///
/// 部门行政区划名称
///
public string? OrgAreaName
{
get { return _contextAccessor.HttpContext.User.FindFirstValue(AppClaimTypes.DepartmentAreaName); }
init { }
}
public string? AreaId
{
get { return _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.AreaId); }
init { }
}
public string? ClientId
{
get { return _contextAccessor.HttpContext.User.FindFirstValue(JwtClaimTypes.ClientId); }
init { }
}
///
/// 工号
///
public string? StaffNo
{
get { return _contextAccessor.HttpContext.User.FindFirstValue(AppClaimTypes.StaffNo); }
init { }
}
}