Разные флаги доступа на разных серверах
В предверии нового года, в момент зимних праздников, я начал работу над тем, что давно хотел сделать, но не делал. И над тем, что Вы так давно просили.
Реализация этого займёт некоторое время, и оно частично может поломать уже существующий функционал. В процессе запиливания кое-что придётся вырезать (ваучеры переделать я, наверное, не осилю, и просто вырежу), но в целом планы более чем оптимистичны.
Вот
тут можно следить за прогрессом. Но если вкратце, вот что придётся сделать перед тем, как это попадёт в релиз:
- Собственно, небольшой рефакторинг базы данных. Часть предполагаемой будущей схемы БД у меня есть, и она уже воплощена в файле обновления 550.
- Плагины. Надо полностью переделывать загрузку администраторских учёток.
- Кеш привилегий. Вытекает из второго пункта. Чтобы не делать тысячу запросов вместо одного, было принято решение создать таблицу кеша привилегий, который должен перестраиваться после каждого изменения любого администратора. В этом кеше будет храниться вся нужная информация обо всех админах для плагинов.
- Менеджер пользователей. Сейчас у нас два менеджера пользователей: один старый от оригинала (сохранён исключительно для совместимости старого кода) и новый. Они оба должны уметь работать с новыми таблицами. Потребуется приложить некоторое кол-во усилий.
- Страница аккаунта после авторизации. Если помните, после авторизации в веб-панели, пользователя всегда перебрасывает на страницу с его правами и прочей информацией.
Права было решено вынести в отдельную таблицу, связанную с конкретным сервером (подробнее ниже), потому эта страница подвергнется изменениям.
- Срок. Срок теперь напрямую привязан к правам пользователя на конкретном сервере. Он не глобален.
- Веб-права. Скорее всего, Вы помните такую штуку, как "веб-права". Там ещё есть пункты "Просмотр администраторов" и т.д..
Веб-права тоже теперь частично привязаны к серверу (глобальные права по прежнему остаются, но они немного по другому работают: нет привязки к конкретному серверу).
Если у Вас нет глобального права на редактирование админов, но есть серверное (локальное) веб-право на редактирование админов на сервере #3 - Вы сможете редактировать только админов с сервера #3. Другие Вам будут недоступны.
P.S.: Это самая сложная часть всего проекта. Нужно полностью переделывать весь бэк.
Ещё, пока я писал этот пост, внезапно вспомнил, что SourceMod допускает возможность наличия нескольких админ-групп у одного игрока. Хочу и это сделать, но пока не уверен, что оно попадёт в этот PR, и конкретно в это обновление.
Что гарантированно сломается в процессе запила этого PR?
- Часть веба. Увы, но в СБ везде используется ручная работа с БД. Никакого EF не предусмотрено. Полностью всё оттестировать после запиливания PR невозможно, потому после выполнения слияния PR с основной версией, будет выжидаться месяц в ожидании баг-репортов, а уже потом релиз.
- Плагины, работающие с БД. В частности, сам СБ (но его мы уж как-нибудь сами починим), или другие, которые работают с БД. Например, этот или этот.
- GameCMS. Я предупредил сразу, так что убедительная просьба к пользователям GameCMS: пока Стас не сделает поддержку изменений (если он её вообще сделает), не обновляйтесь и не долбите мне личку, что это не работает. :dash2: