PSTW_CentralizeSystem/CustomPolicy/RoleModulePolicy.cs
2024-11-15 16:29:52 +08:00

35 lines
1.5 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using PSTW_CentralSystem.DBContext;
namespace PSTW_CentralSystem.CustomPolicy
{
public class RoleModulePolicy : IAuthorizationRequirement
{
}
public class RoleModuleHandler : AuthorizationHandler<RoleModulePolicy>
{
private readonly AuthDBContext _authDBContext;
private readonly UserManager<IdentityUser> _userManager;
private readonly RoleManager<IdentityRole> _roleManager;
private readonly IHttpContextAccessor _httpContextAccessor;
public RoleModuleHandler( AuthDBContext authDBContext, UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager, IHttpContextAccessor httpContextAccessor)
{
_authDBContext = authDBContext;
_userManager = userManager;
_roleManager = roleManager;
_httpContextAccessor = httpContextAccessor;
}
protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, RoleModulePolicy requirement)
{
// Get the current user
var currentUser = await _userManager.GetUserAsync(context.User);
var userRole = await _userManager.GetRolesAsync(currentUser ?? new IdentityUser());
var moduleName = _httpContextAccessor.HttpContext?.GetRouteData().Values["controller"]?.ToString();
var regModule = _httpContextAccessor.HttpContext?.GetRouteData().Values["page"]?.ToString();
context.Fail();
}
}
}