diff --git a/docs/planning/gnexus-auth-integration.md b/docs/planning/gnexus-auth-integration.md index 6ed1049..7e70417 100644 --- a/docs/planning/gnexus-auth-integration.md +++ b/docs/planning/gnexus-auth-integration.md @@ -55,12 +55,14 @@ ### 2.4. Guest -**Решение:** локальная концепция SHServ (не system_role в `gnexus-auth`). +**Решение:** `guest` — явная client role в `gnexus-auth`, аутентифицированный пользователь. **Обоснование:** -- В `gnexus-auth` три базовых system_role: `superadmin`, `admin`, `user`. -- Guest = отсутствие авторизации в SHServ. Локально разрешаем минимальные permissions для guest. -- Это не требует изменений в `gnexus-auth` и не создаёт фиктивных аккаунтов. +- По умолчанию **без авторизации ничего нельзя** — все endpoints требуют `Authorization: Bearer`. +- `guest` — это реальная роль, назначаемая в `gnexus-auth` (как client role, не system_role). +- Новым пользователям по умолчанию даётся роль `guest` с минимальным набором прав. +- Админ/суперадмин может повысить роль до `user` или `admin`. +- Это обеспечивает полный контроль: каждый, кто заходит в систему, — идентифицирован. ## 3. Модель данных (новые таблицы) @@ -217,17 +219,18 @@ ### 5.1. Роли -| Роль | Описание | Источник | -|------|----------|----------| -| `superadmin` | Полный доступ | `AuthenticatedUser->systemRole` | -| `admin` | Администрирование SHServ | `AuthenticatedUser->systemRole` | -| `user` | Обычный пользователь | `AuthenticatedUser->systemRole` | -| `guest` | Неавторизованный | Локально (отсутствие auth) | +| Роль | Описание | Источник | Тип | +|------|----------|----------|-----| +| `superadmin` | Полный доступ | `AuthenticatedUser->systemRole` | system_role | +| `admin` | Администрирование SHServ | `AuthenticatedUser->systemRole` | system_role | +| `user` | Обычный пользователь | `AuthenticatedUser->systemRole` | system_role | +| `guest` | Аутентифицированный с минимальными правами | `ClientAccess->roleIds[]` | client_role | -Пакет `gnexus/auth-client` возвращает `AuthenticatedUser` с полями: -- `systemRole` — глобальная роль в `gnexus-auth` (`superadmin`/`admin`/`user`). -- `clientAccessList` — массив `ClientAccess`, каждый содержит `clientId`, `roleIds[]`, `permissionIds[]` для конкретного Client. -- Для SHServ берём `clientAccessList` где `clientId === GAUTH_CLIENT_ID`. +**Модель:** +- `systemRole` (`superadmin`/`admin`/`user`) определяет административный уровень. +- `clientAccessList[].roleIds[]` — клиентские роли в контексте SHServ (где `clientId === GAUTH_CLIENT_ID`). +- `guest` — client role, назначается по умолчанию новым пользователям. +- **Нет анонимного доступа** — любой запрос к API требует валидного access token. ### 5.2. Права (starter set)