39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using gehGassi.Permissions;
|
|
using gehGassi.Web.Auth.Filters;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace gehGassi.Web.Auth.Attributes
|
|
{
|
|
/// <summary>
|
|
/// Attribut zur Prüfung ob ein Benutzer über alle Permissions verfügt
|
|
/// </summary>
|
|
public class HasPermissionsAttribute : TypeFilterAttribute
|
|
{
|
|
private List<Permission> _permissions;
|
|
|
|
public List<Permission> Permissions
|
|
{
|
|
get => _permissions;
|
|
set
|
|
{
|
|
_permissions = value;
|
|
Arguments = new object[] { new PermissionSettings() { Permissions = _permissions.ToList(), All = true } };
|
|
}
|
|
}
|
|
|
|
public HasPermissionsAttribute(params Permission[] permissions) : base(typeof(AuthorizePermissionsPolicyFilter))
|
|
{
|
|
_permissions = permissions.ToList();
|
|
Arguments = new object[] { new PermissionSettings() { Permissions = _permissions.ToList(), All = true } };
|
|
}
|
|
}
|
|
|
|
public class PermissionSettings
|
|
{
|
|
public List<Permission> Permissions { get; set; }
|
|
public bool All { get; set; }
|
|
}
|
|
}
|