61 lines
2.6 KiB
Markdown
61 lines
2.6 KiB
Markdown
# Что нужно сделать на 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:
|
||
|
||
```json
|
||
{
|
||
"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. |