using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using PSTW_CentralSystem.DBContext; namespace PSTW_CentralSystem.CustomPolicy { public class RoleModulePolicy : IAuthorizationRequirement { } public class RoleModuleHandler : AuthorizationHandler { private readonly AuthDBContext _authDBContext; private readonly UserManager _userManager; private readonly RoleManager _roleManager; private readonly IHttpContextAccessor _httpContextAccessor; public RoleModuleHandler( AuthDBContext authDBContext, UserManager userManager, RoleManager 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(); } } }