forked from ddrilling/AsbCloudServer
29 lines
1.1 KiB
C#
29 lines
1.1 KiB
C#
using System;
|
||
using System.Collections.Concurrent;
|
||
|
||
namespace AsbCloudWebApi;
|
||
|
||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
||
public class PermissionAttribute : Attribute
|
||
{
|
||
public static ConcurrentBag<string> Registered { get; } = new();
|
||
|
||
public string Name { get; set; } = null!;
|
||
|
||
/// <summary>
|
||
/// Проверка наличия у пользователя разрешения с именем "{ControllerName}.{http_method}".
|
||
/// Пример автоматической генерации имени: "Message.get", где "Message" - имя контроллера MessageController.
|
||
/// </summary>
|
||
public PermissionAttribute() { }
|
||
|
||
/// <summary>
|
||
/// Проверка наличия у пользователя указанного разрешения.
|
||
/// </summary>
|
||
/// <param name="name">Имя разрешения (default = ControllerName.http_method)</param>
|
||
public PermissionAttribute(string name)
|
||
{
|
||
Name = name;
|
||
Registered.Add(name);
|
||
}
|
||
}
|