Add Telegram auth flow to backoffice
This commit is contained in:
61
BACKEND_AUTH_TODO.ru.md
Normal file
61
BACKEND_AUTH_TODO.ru.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Что нужно сделать на 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.
|
||||
Reference in New Issue
Block a user