Align specs with implementation. Refs EventHub/EventHubSpec#2
This commit is contained in:
+5
-4
@@ -262,15 +262,15 @@ src/
|
|||||||
- `GET /v1/calendars/:calendar_id/view?month=YYYY-MM` — HTML-календарь (владелец), включая архив.
|
- `GET /v1/calendars/:calendar_id/view?month=YYYY-MM` — HTML-календарь (владелец), включая архив.
|
||||||
|
|
||||||
### Административные (порт 8445)
|
### Административные (порт 8445)
|
||||||
- `GET /v1/admin/health` — состояние сервера.
|
- `GET /admin/health` — состояние сервера (без префикса `/v1`; используется в CT и Traefik healthcheck).
|
||||||
- `GET /v1/admin/stats` — статистика.
|
- `GET /v1/admin/stats` — агрегированная статистика дашборда.
|
||||||
- `POST /v1/admin/login` — вход администратора.
|
- `POST /v1/admin/login` — вход администратора.
|
||||||
- `POST /v1/admin/refresh` — обновление пары access/refresh JWT администратора.
|
- `POST /v1/admin/refresh` — обновление пары access/refresh JWT администратора.
|
||||||
- `GET /v1/admin/users`, `GET /v1/admin/users/:id` — пользователи.
|
- `GET /v1/admin/users`, `GET /v1/admin/users/:id` — пользователи.
|
||||||
- `GET /v1/admin/reports`, `GET /v1/admin/reports/:id` — жалобы.
|
- `GET /v1/admin/reports`, `GET /v1/admin/reports/:id` — жалобы.
|
||||||
- `DELETE /v1/admin/reviews/:id` — удалить отзыв.
|
- `DELETE /v1/admin/reviews/:id` — удалить отзыв.
|
||||||
- `GET /v1/admin/banned-words`, `POST /v1/admin/banned-words` — запрещённые слова.
|
- `GET /v1/admin/banned-words`, `POST /v1/admin/banned-words` — запрещённые слова.
|
||||||
- `GET /v1/admin/tickets/stats` — статистика тикетов.
|
- `GET /v1/admin/tickets/stats` — статистика тикетов: `total_tickets`, `open`, `in_progress`, `resolved`, `closed`, `total_errors`.
|
||||||
- `GET /v1/admin/tickets`, `GET /v1/admin/tickets/:id` — управление тикетами.
|
- `GET /v1/admin/tickets`, `GET /v1/admin/tickets/:id` — управление тикетами.
|
||||||
- `GET /v1/admin/subscriptions`, `POST /v1/admin/subscriptions/:id` — подписки.
|
- `GET /v1/admin/subscriptions`, `POST /v1/admin/subscriptions/:id` — подписки.
|
||||||
- `PUT /v1/admin/:target_type/:id` — модерация.
|
- `PUT /v1/admin/:target_type/:id` — модерация.
|
||||||
@@ -282,9 +282,10 @@ src/
|
|||||||
|
|
||||||
### Общие принципы
|
### Общие принципы
|
||||||
- Пользователи и администраторы используют разные эндпоинты и JWT-секреты.
|
- Пользователи и администраторы используют разные эндпоинты и JWT-секреты.
|
||||||
- Access-токен — короткоживущий stateless JWT (HS256).
|
- Access-токен — короткоживущий stateless JWT (HS256), **TTL 86400 с (24 ч)** — `eventhub_auth:generate_token/4`.
|
||||||
- Refresh-токен — 30 дней; подписанный JWT в единой session-модели (`auth_session`).
|
- Refresh-токен — 30 дней; подписанный JWT в единой session-модели (`auth_session`).
|
||||||
- Все защищённые эндпоинты требуют заголовок `Authorization: Bearer <access_token>`.
|
- Все защищённые эндпоинты требуют заголовок `Authorization: Bearer <access_token>`.
|
||||||
|
- **Source of truth:** `EventHubSpec` (этот документ); Swagger в репозитории — вторичная справка, синхронизируется по факту кода.
|
||||||
|
|
||||||
### Единая session-модель (`auth_session`)
|
### Единая session-модель (`auth_session`)
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
| Модератор | `moderator` | Работа с жалобами и отзывами. Остальные разделы недоступны. |
|
| Модератор | `moderator` | Работа с жалобами и отзывами. Остальные разделы недоступны. |
|
||||||
| Поддержка | `support` | Работа с тикетами (баг-трекер). Остальные разделы недоступны. |
|
| Поддержка | `support` | Работа с тикетами (баг-трекер). Остальные разделы недоступны. |
|
||||||
|
|
||||||
Права проверяются на уровне фронтенда: пункты меню и маршруты отображаются или скрываются в зависимости от роли, полученной из `GET /v1/admin/me`.
|
Права проверяются на уровне фронтенда: пункты меню и маршруты (`RoleGuard` в `App.tsx`, конфиг `src/config/adminAccess.ts`) ограничены по роли из `GET /v1/admin/me`; при прямом URL без прав — страница 403.
|
||||||
|
|
||||||
## 2. Аутентификация и авторизация
|
## 2. Аутентификация и авторизация
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
Эндпоинт: `wss://<домен>/admin/ws?token=<jwt>`
|
Эндпоинт: `wss://<домен>/admin/ws?token=<jwt>`
|
||||||
|
|
||||||
Функциональность:
|
Функциональность:
|
||||||
- При входе устанавливается WebSocket-соединение.
|
- При входе устанавливается WebSocket-соединение; при logout или смене `accessToken` сокет явно закрывается, reconnect отменяется, метрики в store сбрасываются.
|
||||||
- Подписка на каналы `reports` и `tickets`.
|
- Подписка на каналы `reports` и `tickets`.
|
||||||
- При получении сообщения `{ type: "report_created" }` или `{ type: "ticket_created" }` показывается уведомление со ссылкой на соответствующую страницу.
|
- При получении сообщения `{ type: "report_created" }` или `{ type: "ticket_created" }` показывается уведомление со ссылкой на соответствующую страницу.
|
||||||
- Автоматическое переподключение при разрыве соединения.
|
- Автоматическое переподключение при разрыве соединения.
|
||||||
|
|||||||
Reference in New Issue
Block a user