Skip to content

Sysoevsergey/FastAPI

Repository files navigation

Сервис объявлений на FastAPI.
REST API для размещения объявлений о купле/продаже с аутентификацией и разграничением прав доступа. Реализованно в соответствии с заданием.

Основные функции:

  • Объявления - CRUD операции с объявлениями (заголовок, описание, цена, автор, дата)

  • Пользователи - регистрация и управление профилями

  • Безопасность - JWT-аутентификация с ролевой моделью (user/admin)

Права доступа:

Роль Доступ
Неавторизованные Просмотр объявлений, регистрация
Пользователи Управление своими объявлениями и профилем
Администраторы Полный доступ ко всем операциям

Быстрый запуск:

  • run database
docker-compose --env-file .env up db
  • run migrations
docker-compose --env-file .env up migrate
  • run api
docker-compose --env-file .env up app
  • run tests
docker-compose --env-file .env up tests

Документация API: http://localhost:8000/docs

Задание

Вам нужно написать на fastapi и докеризировать сервис объявлений купли/продажи.

У объявлений должны быть следующие поля:

  • заголовок
  • описание
  • цена
  • автор
  • дата создания

Должны быть реализованы следующе методы:

  • Создание: POST /advertisement
  • Обновление: PATCH /advertisement/{advertisement_id}
  • Удаление: DELETE /advertisement/{advertisement_id}
  • Получение по id: GET /advertisement/{advertisement_id}
  • Поиск по полям: GET /advertisement?{query_string}
  1. Добавить роут POST /login . В теле запроса должен передаваться JSON с именем пользователя и паролем. Роут возвращает токен. В дальнейшем токен будет использоваться для авторизации. Срок действия токена - 48 часов. Если клиент предоставил неверный логин пароль сервис должен выдать ошибку 401.

  2. Добавить роуты для управления пользователями:

  • GET /user/{user_id?}

  • POST /user

  • PATCH /user/{user_id}

  • DELETE /user/{user_id}

    Пользователи должны принадлежать одной из следующих групп: user, admin

  1. Права неавторизованного пользователя (клиент может токен не передавать):
  • Создание пользователя POST /user
  • Получение пользователя по id GET /user/{user_id}
  • Получение объявления по id GET /advertisement/{advertisement_id}
  • Поиск объявления по полям GET /advertisement?{query_string}
  1. Права авторизованного пользователя с группой user:
  • все права неавторизованного пользователя
  • обновление своих данных PATCH /user/{user_id}
  • удаление себя DELETE /user/{user_id}
  • создание объявления POST /advertisement
  • обновление своего объявления PATCH /advertisement/{advertisement_id}
  • удаление своего объявления DELETE /advertisement/{advertisement_id}
  1. Права авторизованного пользователя с группой admin:
  • любые действия с любыми сущностям

Если у пользователя недостаточно прав для выполнения операции, то возвращается ошибка 403

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published