32 lines
857 B
C#
32 lines
857 B
C#
using Microsoft.AspNetCore.Mvc.Filters;
|
|
using Netina.Domain.Models.Claims;
|
|
using AuthorizeAttribute = Microsoft.AspNetCore.Authorization.AuthorizeAttribute;
|
|
|
|
namespace Netina.AdminPanel.PWA.Utilities;
|
|
|
|
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
|
|
public class PermissionAuthorizeAttribute : AuthorizeAttribute, IAuthorizationFilter
|
|
{
|
|
private readonly string[] _permissions;
|
|
|
|
public PermissionAuthorizeAttribute(params string[] permission)
|
|
{
|
|
_permissions = permission;
|
|
}
|
|
public void OnAuthorization(AuthorizationFilterContext context)
|
|
{
|
|
var user = context.HttpContext.User;
|
|
var permissions = user.Claims?.Where(c => c.Type == CustomClaimType.Permission)?.ToList();
|
|
if (permissions == null)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|