переделал токен

This commit is contained in:
Zuev
2026-05-27 15:19:18 +03:00
parent d2ef44471b
commit 87cd4cbdc7
28 changed files with 1227 additions and 125 deletions

View File

@@ -23,7 +23,7 @@
{
"success": true,
"message": "OK",
"token": "550e8400-e29b-41d4-a716-446655440000",
"token": "eyJhbGciOiJIUzI1NiJ9...",
"role": "ADMIN",
"redirect": "/admin/",
"departmentId": 1,
@@ -31,6 +31,8 @@
}
```
Ответ также устанавливает `HttpOnly` cookie `magistr_refresh` для обновления access-токена.
**Ошибка (401):**
```json
{
@@ -44,7 +46,7 @@
}
```
> После получения токена клиент должен передавать его в заголовке: `Authorization: Bearer <token>`
> После получения access JWT клиент должен передавать его в заголовке: `Authorization: Bearer <token>`.
Поддерживаемые роли: `ADMIN`, `EDUCATION_OFFICE`, `DEPARTMENT`, `SCHEDULE_VIEWER`, `TEACHER`, `STUDENT`.
@@ -59,6 +61,37 @@ Redirect по ролям:
| `TEACHER` | `/teacher/` |
| `STUDENT` | `/student/` |
### `POST /api/auth/refresh`
Обновляет access JWT по refresh-cookie. Тело запроса не требуется.
**Успешный ответ (200):**
```json
{
"success": true,
"message": "OK",
"token": "eyJhbGciOiJIUzI1NiJ9...",
"role": "ADMIN",
"redirect": "/admin/",
"departmentId": 1,
"userId": 1
}
```
Refresh-токен ротируется при каждом успешном обновлении, а старый refresh-токен отзывается.
### `POST /api/auth/logout`
Отзывает текущий refresh-токен и очищает refresh-cookie.
**Успешный ответ (200):**
```json
{
"success": true,
"message": "Выход выполнен"
}
```
### `GET /api/auth/me`
Возвращает текущего пользователя по bearer-токену.
@@ -151,7 +184,7 @@ Redirect по ролям:
## Права ролей на API
Скрытие вкладок во frontend не является защитой. Все `/api/**` запросы, кроме `POST /api/auth/login`, проходят через bearer-токен и `@RequireRoles`.
Скрытие вкладок во frontend не является защитой. Все `/api/**` запросы, кроме `POST /api/auth/login`, `POST /api/auth/refresh` и `POST /api/auth/logout`, проходят через bearer access JWT и `@RequireRoles`.
Важные ограничения: