using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;

namespace AsbCloudWebApi
{
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public class PermissionAttribute : Attribute
    {
        public static SortedSet<string> Registered { get; } = new SortedSet<string>();

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