0052725b88
- Created UserViewSheet component to display user details including username, full name, role, status, and timestamps. - Created RoleViewSheet component to display role details including name, level, status, creation date, and associated permissions. - Introduced permissions configuration in a new permissions.ts file, defining categories and permission codes for better management. - Implemented middleware for authentication, ensuring access control for protected routes.
25 lines
814 B
C#
25 lines
814 B
C#
using Microsoft.AspNetCore.Authorization;
|
|
|
|
namespace Distribution.Infra.Authorization;
|
|
|
|
public class PermissionAuthorizationHandler : AuthorizationHandler<PermissionRequirement>
|
|
{
|
|
private readonly IPermissionService _permissionService;
|
|
|
|
public PermissionAuthorizationHandler(IPermissionService permissionService)
|
|
{
|
|
_permissionService = permissionService;
|
|
}
|
|
|
|
protected override async Task HandleRequirementAsync(
|
|
AuthorizationHandlerContext context, PermissionRequirement requirement)
|
|
{
|
|
var roleIdClaim = context.User.FindFirst("RoleId")?.Value;
|
|
if (!Guid.TryParse(roleIdClaim, out var roleId))
|
|
return;
|
|
|
|
if (await _permissionService.HasPermissionAsync(roleId, requirement.PermissionCode))
|
|
context.Succeed(requirement);
|
|
}
|
|
}
|