mirror of
https://github.com/wowlikon/LiB.git
synced 2026-02-04 04:31:09 +00:00
Улучшение админки
This commit is contained in:
@@ -67,105 +67,124 @@
|
||||
|
||||
#### **Аутентификация** (`/api/auth`)
|
||||
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|-----------------------------------------------|----------------|------------------------------------------|
|
||||
| POST | `/api/auth/register` | Публичный | Регистрация нового пользователя |
|
||||
| POST | `/api/auth/token` | Публичный | Получение JWT токенов (access + refresh) |
|
||||
| POST | `/api/auth/refresh` | Публичный | Обновление пары токенов |
|
||||
| GET | `/api/auth/me` | Авторизованный | Информация о текущем пользователе |
|
||||
| PUT | `/api/auth/me` | Авторизованный | Обновление профиля текущего пользователя |
|
||||
| GET | `/api/auth/users` | Сотрудник | Список всех пользователей |
|
||||
| POST | `/api/auth/users/{user_id}/roles/{role_name}` | Админ | Назначение роли пользователю |
|
||||
| DELETE | `/api/auth/users/{user_id}/roles/{role_name}` | Админ | Удаление роли у пользователя |
|
||||
| GET | `/api/auth/roles` | Авторизованный | Список ролей в системе |
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|------------------------------|----------------|------------------------------------------|
|
||||
| POST | `/register` | Публичный | Регистрация нового пользователя |
|
||||
| POST | `/token` | Публичный | Получение JWT токенов (access + refresh) |
|
||||
| POST | `/refresh` | Публичный | Обновление пары токенов |
|
||||
| GET | `/me` | Авторизованный | Информация о текущем пользователе |
|
||||
| PUT | `/me` | Авторизованный | Обновление профиля текущего пользователя |
|
||||
| GET | `/2fa` | Авторизованный | Создаёт QR-код для включения 2FA |
|
||||
| POST | `/2fa/verify` | Неполный вход | Завершает вход при включеной 2FA |
|
||||
| POST | `/2fa/enable` | Авторизованный | Включает двухваткорную аутентификацию |
|
||||
| POST | `/2fa/disable` | Авторизованный | Выключает двухваткорную аутентификацию |
|
||||
| GET | `/recovery-codes/status` | Авторизованный | Проверяет состояние кодов восстановления |
|
||||
| POST | `/recovery-codes/regenerate` | Авторизованный | Пересоздает коды восстановления пароля |
|
||||
| POST | `/password/reset` | Публичный | Сброс пароля с помощью одноразового кода |
|
||||
|
||||
#### **Авторы** (`/api/authors`)
|
||||
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|---------------------|-----------|---------------------------------|
|
||||
| POST | `/api/authors` | Сотрудник | Создать нового автора |
|
||||
| GET | `/api/authors` | Публичный | Получить список всех авторов |
|
||||
| GET | `/api/authors/{id}` | Публичный | Получить автора по ID с книгами |
|
||||
| PUT | `/api/authors/{id}` | Сотрудник | Обновить автора по ID |
|
||||
| DELETE | `/api/authors/{id}` | Сотрудник | Удалить автора по ID |
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|----------|-----------|---------------------------------|
|
||||
| POST | `/` | Сотрудник | Создать нового автора |
|
||||
| GET | `/` | Публичный | Получить список всех авторов |
|
||||
| GET | `/{id}` | Публичный | Получить автора по ID с книгами |
|
||||
| PUT | `/{id}` | Сотрудник | Обновить автора по ID |
|
||||
| DELETE | `/{id}` | Сотрудник | Удалить автора по ID |
|
||||
|
||||
#### **Книги** (`/api/books`)
|
||||
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|---------------------|-----------|-----------------------------------------------------------|
|
||||
| GET | `/api/books/filter` | Публичный | Фильтрация книг по названию, авторам, жанрам с пагинацией |
|
||||
| POST | `/api/books` | Сотрудник | Создать новую книгу |
|
||||
| GET | `/api/books` | Публичный | Получить список всех книг |
|
||||
| GET | `/api/books/{id}` | Публичный | Получить книгу по ID с авторами и жанрами |
|
||||
| PUT | `/api/books/{id}` | Сотрудник | Обновить книгу по ID |
|
||||
| DELETE | `/api/books/{id}` | Сотрудник | Удалить книгу по ID |
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|-----------|-----------|----------------------------------------------|
|
||||
| POST | `/` | Сотрудник | Создать новую книгу |
|
||||
| GET | `/` | Публичный | Получить список всех книг |
|
||||
| GET | `/{id}` | Публичный | Получить книгу по ID с авторами и жанрами |
|
||||
| PUT | `/{id}` | Сотрудник | Обновить книгу по ID |
|
||||
| DELETE | `/{id}` | Сотрудник | Удалить книгу по ID |
|
||||
| GET | `/filter` | Публичный | Фильтрация книг по названию, авторам, жанрам |
|
||||
|
||||
#### **Жанры** (`/api/genres`)
|
||||
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|--------------------|-----------|-------------------------------|
|
||||
| POST | `/api/genres` | Сотрудник | Создать новый жанр |
|
||||
| GET | `/api/genres` | Публичный | Получить список всех жанров |
|
||||
| GET | `/api/genres/{id}` | Публичный | Получить жанр по ID с книгами |
|
||||
| PUT | `/api/genres/{id}` | Сотрудник | Обновить жанр по ID |
|
||||
| DELETE | `/api/genres/{id}` | Сотрудник | Удалить жанр по ID |
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|----------|-----------|-------------------------------|
|
||||
| POST | `/` | Сотрудник | Создать новый жанр |
|
||||
| GET | `/` | Публичный | Получить список всех жанров |
|
||||
| GET | `/{id}` | Публичный | Получить жанр по ID с книгами |
|
||||
| PUT | `/{id}` | Сотрудник | Обновить жанр по ID |
|
||||
| DELETE | `/{id}` | Сотрудник | Удалить жанр по ID |
|
||||
|
||||
#### **Выдачи** (`/api/loans`)
|
||||
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|------------------------------------|----------------|--------------------------------------------------------------|
|
||||
| POST | `/api/loans` | Авторизованный | Создать выдачу/бронь (читатели для себя, Сотрудник для всех) |
|
||||
| GET | `/api/loans` | Авторизованный | Список выдач (читатели видят свои, Сотрудник видят все) |
|
||||
| GET | `/api/loans/analytics` | Админ | Аналитика выдач и возвратов |
|
||||
| GET | `/api/loans/{id}` | Авторизованный | Получить выдачу по ID (читатели только свои) |
|
||||
| PUT | `/api/loans/{id}` | Авторизованный | Обновить выдачу (читатели только свои) |
|
||||
| POST | `/api/loans/{id}/confirm` | Сотрудник | Подтвердить бронь (меняет статус на BORROWED) |
|
||||
| POST | `/api/loans/{id}/return` | Сотрудник | Вернуть книгу и закрыть выдачу |
|
||||
| DELETE | `/api/loans/{id}` | Авторизованный | Удалить выдачу/бронь (только для RESERVED статуса) |
|
||||
| GET | `/api/loans/book/{book_id}/active` | Сотрудник | Получить активную выдачу книги |
|
||||
| POST | `/api/loans/issue` | Админ | Выдать книгу напрямую без бронирования |
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|-------------------------|----------------|------------------------------------------------------------|
|
||||
| POST | `/` | Авторизованный | Создать выдачу/бронь (читатели на себя, cотрудник на всех) |
|
||||
| GET | `/` | Авторизованный | Список выдач (читатели видят свои, Сотрудник видят все) |
|
||||
| GET | `{id}` | Авторизованный | Получить выдачу по ID (читатели только свои) |
|
||||
| PUT | `{id}` | Авторизованный | Обновить выдачу (читатели только свои) |
|
||||
| DELETE | `{id}` | Авторизованный | Удалить выдачу/бронь (только для RESERVED статуса) |
|
||||
| POST | `{id}/confirm` | Сотрудник | Подтвердить бронь (меняет статус на BORROWED) |
|
||||
| POST | `{id}/return` | Сотрудник | Вернуть книгу и закрыть выдачу |
|
||||
| GET | `book/{book_id}/active` | Сотрудник | Получить активную выдачу книги |
|
||||
| POST | `issue` | Админ | Выдать книгу напрямую без бронирования |
|
||||
| GET | `analytics` | Админ | Аналитика выдач и возвратов |
|
||||
|
||||
#### **Связи** (`/api`)
|
||||
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|----------------------------------|-----------|-------------------------------|
|
||||
| POST | `/api/relationships/author-book` | Сотрудник | Связать автора и книгу |
|
||||
| DELETE | `/api/relationships/author-book` | Сотрудник | Удалить связь автор-книга |
|
||||
| GET | `/api/authors/{id}/books` | Публичный | Получить список книг автора |
|
||||
| GET | `/api/books/{id}/authors` | Публичный | Получить список авторов книги |
|
||||
| POST | `/api/relationships/genre-book` | Сотрудник | Связать жанр и книгу |
|
||||
| DELETE | `/api/relationships/genre-book` | Сотрудник | Удалить связь жанр-книга |
|
||||
| GET | `/api/genres/{id}/books` | Публичный | Получить список книг жанра |
|
||||
| GET | `/api/books/{id}/genres` | Публичный | Получить список жанров книги |
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|------------------------------|-----------|-------------------------------|
|
||||
| POST | `/relationships/author-book` | Сотрудник | Связать автора и книгу |
|
||||
| DELETE | `/relationships/author-book` | Сотрудник | Удалить связь автор-книга |
|
||||
| GET | `/authors/{id}/books` | Публичный | Получить список книг автора |
|
||||
| GET | `/books/{id}/authors` | Публичный | Получить список авторов книги |
|
||||
| POST | `/relationships/genre-book` | Сотрудник | Связать жанр и книгу |
|
||||
| DELETE | `/relationships/genre-book` | Сотрудник | Удалить связь жанр-книга |
|
||||
| GET | `/genres/{id}/books` | Публичный | Получить список книг жанра |
|
||||
| GET | `/books/{id}/genres` | Публичный | Получить список жанров книги |
|
||||
|
||||
|
||||
#### **Пользователи** (`/api/users`)
|
||||
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|--------|-------------------------------|----------------|------------------------------|
|
||||
| POST | `/` | Админ | Создать нового пользователя |
|
||||
| GET | `/` | Админ | Список всех пользователей |
|
||||
| GET | `/{id}` | Админ | Получить пользователя по ID |
|
||||
| PUT | `/{id}` | Админ | Обновить пользователя по ID |
|
||||
| DELETE | `/{id}` | Админ | Удалить пользователя по ID |
|
||||
| POST | `/{user_id}/roles/{role_name}` | Админ | Назначение роли пользователю |
|
||||
| DELETE | `/{user_id}/roles/{role_name}` | Админ | Удаление роли у пользователя |
|
||||
| GET | `/roles` | Авторизованный | Список ролей в системе |
|
||||
|
||||
|
||||
#### **Прочее** (`/api`)
|
||||
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|-------|--------------|-----------|----------------------|
|
||||
| GET | `/api/info` | Публичный | Информация о сервисе |
|
||||
| GET | `/api/stats` | Публичный | Статистика системы |
|
||||
| Метод | Эндпоинт | Доступ | Описание |
|
||||
|-------|----------|-----------|----------------------|
|
||||
| GET | `/info` | Публичный | Информация о сервисе |
|
||||
| GET | `/stats` | Публичный | Статистика системы |
|
||||
|
||||
### **Веб-страницы**
|
||||
|
||||
| Путь | Доступ | Описание |
|
||||
|---------------------|----------------|-----------------------------------------|
|
||||
| `/` | Публичный | Главная страница |
|
||||
| `/auth` | Публичный | Страница авторизации |
|
||||
| `/profile` | Авторизованный | Профиль пользователя |
|
||||
| `/books` | Публичный | Каталог книг с фильтрацией |
|
||||
| `/book/{id}` | Публичный | Страница просмотра книги |
|
||||
| `/book/create` | Сотрудник | Создание новой книги |
|
||||
| `/book/{id}/edit` | Сотрудник | Редактирование книги |
|
||||
| `/authors` | Публичный | Список авторов |
|
||||
| `/author/{id}` | Публичный | Страница автора |
|
||||
| `/author/create` | Сотрудник | Создание автора |
|
||||
| `/author/{id}/edit` | Сотрудник | Редактирование автора |
|
||||
| `/genre/create` | Сотрудник | Создание жанра |
|
||||
| `/genre/{id}/edit` | Сотрудник | Редактирование жанра |
|
||||
| `/my-books` | Авторизованный | Мои выдачи |
|
||||
| `/users` | Сотрудник | Управление пользователями |
|
||||
| `/analytics` | Админ | Аналитика выдач и возвратов |
|
||||
| `/api` | Публичный | Страница с ссылками на документацию API |
|
||||
| Путь | Доступ | Описание |
|
||||
|---------------------|----------------|-----------------------------|
|
||||
| `/` | Публичный | Главная страница |
|
||||
| `/api` | Публичный | Ссылки на документацию |
|
||||
| `/auth` | Публичный | Страница авторизации |
|
||||
| `/profile` | Авторизованный | Профиль пользователя |
|
||||
| `/books` | Публичный | Каталог книг с фильтрацией |
|
||||
| `/book/{id}` | Публичный | Страница просмотра книги |
|
||||
| `/book/create` | Сотрудник | Создание новой книги |
|
||||
| `/book/{id}/edit` | Сотрудник | Редактирование книги |
|
||||
| `/authors` | Публичный | Список авторов |
|
||||
| `/author/{id}` | Публичный | Страница автора |
|
||||
| `/author/create` | Сотрудник | Создание автора |
|
||||
| `/author/{id}/edit` | Сотрудник | Редактирование автора |
|
||||
| `/genre/create` | Сотрудник | Создание жанра |
|
||||
| `/genre/{id}/edit` | Сотрудник | Редактирование жанра |
|
||||
| `/my-books` | Авторизованный | Мои выдачи |
|
||||
| `/users` | Админ | Управление пользователями |
|
||||
| `/analytics` | Админ | Аналитика выдач и возвратов |
|
||||
|
||||
|
||||
### **Схема базы данных**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user