DD.WellWorkover.Cloud/AsbCloudWebApi/PermissionAttribute.cs

29 lines
1.1 KiB
C#
Raw Normal View History

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