35 lines
1.5 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|