Перейти к содержанию

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/authNginxAuthRoute

Код Условие Заголовки в ответе
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/adminNginxAdminAuthRoute

Код Условие Заголовки в ответе
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 Просмотр данных пользователей без изменений