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); } } }