Files
market-backOfficce/BACKEND_AUTH_TODO.ru.md
2026-06-21 01:41:58 +04:00

2.6 KiB
Raw Permalink Blame History

Что нужно сделать на backend для Telegram-логина

BackOffice уже готов к текущему backend: сначала пробует новый /userauth/* контракт из marketplaces/docs/telegram-login-dialog.html, а если backend отвечает 404, использует текущий marketplace-flow через /users/sessions.

Чтобы все работало строго по новому единому контракту, нужно сделать следующее.

Auth-service

Добавить или включить endpoints:

  • POST /userauth/qr/create - создать короткоживущий QR/login token и вернуть ссылку Telegram.
  • GET /userauth/qr/poll?token=... - вернуть статус pending, confirmed или expired.
  • GET /userauth/session - вернуть текущую активную сессию пользователя или 401/404, если сессии нет.
  • POST /userauth/logout - завершить текущую сессию.

Минимальный ответ для подтвержденного login:

{
  "status": "confirmed",
  "session": {
    "sessionId": "uuid",
    "telegramUserId": "123456",
    "username": "user",
    "displayName": "User Name",
    "active": true,
    "expiresAt": "2026-06-21T12:00:00Z"
  }
}

Main API

Поддержать активацию backend API-сессии:

  • POST /usersession/{sessionId} - принять подтвержденный sessionId из auth-service и открыть доступ к marketplace/backoffice API.

CORS и credentials

Разрешить реальные frontend origins для BackOffice и Marketplace:

  • production domain BackOffice;
  • https://dexarmarket.ru, если marketplace и backoffice используют общий auth-flow;
  • dev через proxy уже настроен на frontend стороне.

Нужно разрешить:

  • Access-Control-Allow-Credentials: true;
  • методы GET, POST, DELETE, OPTIONS;
  • headers Content-Type, WebSessionID;
  • cookies с SameSite=None; Secure; HttpOnly, если auth-service использует cookie-сессию.

Совместимость

Пока /userauth/* не развернуты, нельзя выключать текущие marketplace endpoints:

  • POST /users/sessions;
  • GET /users/sessions/{sessionId};
  • DELETE /users/sessions/{sessionId}.

BackOffice сейчас использует их как fallback, чтобы логин уже работал на текущем backend.