Add JWT authentication and authorization infrastructure

This commit is contained in:
2026-08-18 15:43:46 +05:30
parent ea2e5229c8
commit e0e691acbf
18 changed files with 395 additions and 4 deletions
@@ -0,0 +1,25 @@
using Microsoft.AspNetCore.Authorization;
namespace Distribution.Infra.Auth
{
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("role_id")?.Value;
if (!Guid.TryParse(roleIdClaim, out var roleId))
return;
if (await _permissionService.HasPermissionAsync(roleId, requirement.PermissionCode))
context.Succeed(requirement);
}
}
}