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.
|