Nginx
nginx auth_request: проверка JWT для /api/pm/* проксирования.
auth_request flow¶
sequenceDiagram
App->>nginx: GET /api/pm/accounts/balance (Bearer JWT)
nginx->>AC: GET /nginx/auth (auth_request)
AC->>AC: проверяет JWT, user.status, user_profile.isLocked
AC->>nginx: 200 + X-User-Id + X-User-Status + X-User-Email
nginx->>PM: GET /accounts/:name/balance (+ X-User-Id)
PM->>nginx: balance JSON
nginx->>App: balance JSON
nginx конфигурация (пример):
auth_request /nginx/auth;
auth_request_set $user_id $upstream_http_x_user_id;
auth_request_set $user_email $upstream_http_x_user_email;
proxy_set_header X-User-Id $user_id;
proxy_set_header X-User-Email $user_email;
/nginx/auth¶
Endpoint: GET /nginx/auth → NginxAuthRoute
| Код | Условие | Заголовки в ответе |
|---|---|---|
| 200 | JWT валиден, пользователь найден, не заблокирован, статус не registration_expired |
X-User-Id, X-User-Status, X-User-Email |
| 401 | Токен отсутствует, невалиден или malformed | — |
| 401 | Пользователь не найден (isArchived = true или не существует) |
— |
| 403 | user.status = registration_expired |
— |
| 403 | user_profile.isLocked = true |
— |
Ошибка при чтении user_profile (до создания записи) считается isLocked = false.
/nginx/auth/admin¶
Endpoint: GET /nginx/auth/admin → NginxAdminAuthRoute
| Код | Условие | Заголовки в ответе |
|---|---|---|
| 200 | JWT валиден, роль найдена в admin_user_roles, роль входит в allowlist |
X-User-Id, X-User-Email, X-User-Role |
| 401 | Токен отсутствует, невалиден или malformed | — |
| 401 | Пользователь не найден | — |
| 403 | user.status = registration_expired |
— |
| 403 | Роль не найдена или не входит в allowlist | — |
Если таблицы admin_roles / admin_user_roles ещё не созданы (до миграции A-1) — возвращает 403.
Доступные роли для admin¶
Роли, допускаемые NginxAdminAuthRoute._allowedRoles:
| Роль | Назначение |
|---|---|
superadmin |
Полный доступ ко всем функциям Admin Panel |
operator |
KYC ревью, управление пользователями |
finance |
Финансовые отчёты и выплаты |
support |
Просмотр данных пользователей без изменений |