Особенности
Система прав Plugify: пользователи, группы и права в основном плагине, хранилище в базе данных и коннектор для Counter-Strike 2.
Система прав состоит из трёх плагинов, которые работают вместе. Плагин Permissions это ядро: он держит в памяти пользователей, группы и права и отвечает на вопрос «можно ли этому игроку это сделать?». Ещё два плагина связывают его с внешним миром.
| Плагин | Пакет | Что делает |
|---|---|---|
permissions | plugify-plugin-permissions | Ядро: пользователи, группы, права, cookie и API, который вызывают другие плагины |
permissions_storage | permissions-storage | Сохраняет группы и пользователей в MySQL, PostgreSQL или SQLite и загружает их обратно |
permissions_connector_s2 | permissions-connector-s2 | Связывает ядро с сервером Counter-Strike 2: загружает игроков при входе, уведомляет их и добавляет команды perms_* |
Ядро ничего не знает ни об игре, ни о базе данных. Поэтому его можно использовать в любом приложении, а хранилище или коннектор можно заменить своим плагином.
Как они работают вместе
- Сервер запускает карту. Коннектор просит ядро загрузить группы, и хранилище в ответ читает их из базы данных.
- Игрок заходит. Коннектор просит ядро загрузить пользователя по SteamID64, и хранилище заполняет группы, права и cookie игрока.
- Плагин проверяет право через
HasPermission. Ядро отвечает из памяти. - Администратор что-то меняет, командой или через API. Ядро сначала даёт хранилищу сохранить изменение, затем применяет его и уведомляет всех подписчиков.
- Игрок выходит, и коннектор убирает пользователя из памяти.
Что даёт ядро
- Права в виде строк через точку:
admin.kick,shop.buy.weapon. - Wildcard:
admin.*покрывает всё внутриadmin., а*покрывает всё. - Запреты: строка, которая начинается с
-, запрещает право, например-admin.ban. - Группы с приоритетом, родительской группой для наследования и своими опциями.
- Временные права и группы, которые сами истекают в заданное время.
- Иммунитет: игрок может действовать только на тех, чей иммунитет не выше.
- Cookie: именованные значения для каждого пользователя, с опциями групп как запасным вариантом.
- События на каждое изменение и колбэки хранилища, которые могут отклонить изменение.
Что добавляет коннектор
- Игроки загружаются при аутентификации и выгружаются при выходе.
- Игрок получает сообщение в консоль, чат или подсказку, когда право или группа выданы, сняты или истекли.
- Команды консоли и чата для управления пользователями и группами, каждая защищена своим правом.
- Фразы на английском и русском, которые можно переопределить.
Читать далее на Руководство