Настройка доступа
Раздел /s-panel/flags-settings — это центр управления правами по action’ам. Здесь admin выбирает, какой флаг нужен для каждого действия каждого модуля.
Интерфейс настройки #
Заходите в Настройка доступа, выбираете модуль в выпадушке наверху. Открывается список actions, объявленных в FlagsPanel модуля. Для каждого можно выбрать:
- Доступно всем — без проверки (любой авторизованный)
- Конкретный флаг из
settings__flags— например,a — Создание контента
Сохранение — кнопкой внизу формы; изменения применяются немедленно.
Где это хранится #
Таблица settings__module_flags:
CREATE TABLE settings__module_flags ( module VARCHAR(64) NOT NULL, action_key VARCHAR(64) NOT NULL, required_flag CHAR(1) NULL, -- NULL = доступно всем PRIMARY KEY (module, action_key) );
Пустой required_flag = «не настроено» = разрешено. Любое значение a–z = «нужен этот флаг».
Как работает проверка #
public function can(string $module, string $key): bool { $flag = $this->flagFor($module, $key); if ($flag === null) return true; // не настроено = разрешено return Auth::can($flag); // иначе проверяем флаг (z всегда true) }
Это же отрабатывает в мобильном REST: DispatchController при каждом запросе читает требуемый флаг и сверяет с подкачанными в сессию из токена правами.
Типичные сценарии #
«Только редактор баннеров» — выдайте сотруднику флаг a и в /flags-settings для всех action’ов модулей кроме Banner требуйте отличный от a флаг.
«Менеджер службы поддержки» — заведите группу support с флагом s, в /flags-settings для Support/SupportOnline укажите этот же s.
«Только просмотр без правок» — для action’ов create/edit/delete требуйте флаг b, а action view оставьте «доступно всем». Юзеры без b увидят страницу, но не смогут ничего изменить.