Доступ в Admingen проверяется на сервере. Сначала приложение определяет пользователя, затем проверяет, разрешена ли ему операция. Скрытый пункт меню или поле формы не защищает данные от прямого API-запроса.
Как настроить доступ в Generator UI
- В Content откройте настройки сущности и вкладку Access.
- В Entity CRUD access включите нужные операции и настройте внешний режим каждой. Административный и внешний доступ задаются отдельно.
- В External READ access добавьте условия выдачи, например
status equal published. В virtual настройте отдельные блоки источника, выбранныхbelongsToи коллекций. - Посмотрите Generated routes, затем выполните Generate → Preview changes → Generate.
- Войдите в запущенную систему администрирования. Первый superadmin создаётся по инструкции в терминале; дальше аккаунтами можно управлять через интерфейс.
Аккаунты и роли
После первого входа доступны разрешённые операции с аккаунтами: создание, сброс пароля, блокировка, разблокировка и отзыв сессий. Аккаунт аутентификации отделён от обычных сущностей: удаление записи сущности не удаляет аккаунт.
superadmin управляет административным приложением в рамках его возможностей. admin выполняет разрешённые операции над сущностями. Доступ внешних пользователей настраивается отдельно. Модуль в меню группирует сущности и не является ролью или набором унаследованных прав.
Как работает сессия
При входе сервер выдаёт короткоживущий токен доступа и cookie для обновления сессии. Токен хранится в памяти страницы, а не в постоянном хранилище браузера. После перезагрузки клиент восстанавливает сессию запросом обновления.
Cookie имеет атрибут HttpOnly. При обновлении сессии и выходе сервер проверяет CSRF и источник запроса. Выход, отзыв сессии, смена пароля и блокировка аккаунта влияют на дальнейший доступ. Даже токен с правильной подписью не разрешит работу с уже отозванной сессией.
Маршруты для интеграции
| Метод и путь | Действие |
|---|---|
POST /api/auth/v1/login |
Войти по учётным данным. |
POST /api/auth/v1/refresh |
Обновить сессию по cookie с проверкой CSRF; тело пустое. |
POST /api/auth/v1/logout |
Завершить сессию; тело пустое. |
GET /api/auth/v1/me |
Получить текущего пользователя. |
POST /api/auth/v1/password/change |
Изменить собственный пароль. |
GET/POST /api/admin/v1/_auth/accounts |
Просмотреть или создать аккаунты с ролью superadmin. |
POST /api/admin/v1/_auth/accounts/{accountID}/password-reset |
Сбросить пароль аккаунта. |
POST .../{accountID}/block / unblock |
Заблокировать или разблокировать аккаунт. |
POST .../{accountID}/sessions/revoke |
Отозвать сессии аккаунта. |
Запросы имеют ограничение размера JSON. Вход и смена пароля проверяют состав тела и не принимают произвольные данные. Пароли и токены не должны попадать в URL, публичные данные и журналы.
Если вход не сохраняется после обновления страницы
Проверьте адреса системы администрирования и API, разрешённые источники и cookie. localhost и 127.0.0.1 — разные имена. На сервере используйте согласованное размещение с HTTPS. Произвольное размещение UI и API на несвязанных сайтах не поддерживается для refresh-cookie.
При 403 не отключайте CSRF. Проверьте ожидаемый Origin и фактически загруженную конфигурацию приложения. Настройки прокси и PostgreSQL собраны в руководстве по безопасности окружения.
Кто может прочитать конкретную запись
Режим external определяет, кто вызывает маршрут. readRule определяет, какие записи попадут в external list/get. Чтобы выдавать только опубликованное, явно настройте status = published в Access. Наличие published среди вариантов enum само по себе ничего не ограничивает.
У виртуальной сущности и её коллекций свои правила; правила исходных сущностей не наследуются. Они не меняют административное чтение и операции записи. Подробнее — виртуальные сущности.
Настройка переключателей и условий описана в Content: доступ. Правила записей и настройки окружения решают разные задачи и нужны независимо друг от друга.