Особенности

Система прав Plugify: пользователи, группы и права в основном плагине, хранилище в базе данных и коннектор для Counter-Strike 2.

Система прав состоит из трёх плагинов, которые работают вместе. Плагин Permissions это ядро: он держит в памяти пользователей, группы и права и отвечает на вопрос «можно ли этому игроку это сделать?». Ещё два плагина связывают его с внешним миром.

ПлагинПакетЧто делает
permissionsplugify-plugin-permissionsЯдро: пользователи, группы, права, cookie и API, который вызывают другие плагины
permissions_storagepermissions-storageСохраняет группы и пользователей в MySQL, PostgreSQL или SQLite и загружает их обратно
permissions_connector_s2permissions-connector-s2Связывает ядро с сервером Counter-Strike 2: загружает игроков при входе, уведомляет их и добавляет команды perms_*

Ядро ничего не знает ни об игре, ни о базе данных. Поэтому его можно использовать в любом приложении, а хранилище или коннектор можно заменить своим плагином.

Как они работают вместе

  1. Сервер запускает карту. Коннектор просит ядро загрузить группы, и хранилище в ответ читает их из базы данных.
  2. Игрок заходит. Коннектор просит ядро загрузить пользователя по SteamID64, и хранилище заполняет группы, права и cookie игрока.
  3. Плагин проверяет право через HasPermission. Ядро отвечает из памяти.
  4. Администратор что-то меняет, командой или через API. Ядро сначала даёт хранилищу сохранить изменение, затем применяет его и уведомляет всех подписчиков.
  5. Игрок выходит, и коннектор убирает пользователя из памяти.

Что даёт ядро

  • Права в виде строк через точку: admin.kick, shop.buy.weapon.
  • Wildcard: admin.* покрывает всё внутри admin., а * покрывает всё.
  • Запреты: строка, которая начинается с -, запрещает право, например -admin.ban.
  • Группы с приоритетом, родительской группой для наследования и своими опциями.
  • Временные права и группы, которые сами истекают в заданное время.
  • Иммунитет: игрок может действовать только на тех, чей иммунитет не выше.
  • Cookie: именованные значения для каждого пользователя, с опциями групп как запасным вариантом.
  • События на каждое изменение и колбэки хранилища, которые могут отклонить изменение.

Что добавляет коннектор

  • Игроки загружаются при аутентификации и выгружаются при выходе.
  • Игрок получает сообщение в консоль, чат или подсказку, когда право или группа выданы, сняты или истекли.
  • Команды консоли и чата для управления пользователями и группами, каждая защищена своим правом.
  • Фразы на английском и русском, которые можно переопределить.