Auth-movies - это API сервис авторизации, который обеспечивает мощную и безопасную идентификацию и аутентификацию пользователей. Используя современные стандарты JWT и OAuth2, он предлагает гибкий интерфейс для интеграции с любыми приложениями или сервисами. С функционалом управления разрешениями, он позволяет настраивать сложные ролевые модели, обеспечивая точный контроль доступа.
💻 Исходный код: https://github.com/xczdenis/movies_auth
📖 Документация: https://xczdenis.github.io/movies_auth
📝 Open API: http://127.0.0.1:5001/api/v1/swagger
- 🐍 Python 3.11+;
- Асинхронный Flask:
- С помощью библиотеки
gevent
приложение наFlask
становится асинхронным; Blueprints
модули для разделения кода;- flask-sqlalchemy для работы с базой данных;
- flask-migrate для миграций;
- flask-jwt-extended для управления JWT;
- flasgger для OpenAPI;
- flask-pydantic для валидации параметров запросов;
- flask-marshmallow для сериализации данных;
- С помощью библиотеки
OAuth2
авторизация;- Хеширование паролей;
PostgreSQL
- основная БД;Redis
- кэш БД, в том числе для хранения отозванных JWT токенов;Jaeger
- распределенная трассировка запросов;Nginx
- proxy-сервер;- Кастомные Faker провайдеры для генерации данных, для полноценного тестирования;
- Полная Docker интеграция:
- тонкие образы - multi-stage сборка;
- docker-compose для локальной разработки;
- тесты в Docker;
- Pre-commit хуки, чтобы код всегда был в отличном состоянии;
- Conventional commits - строгое соблюдение правил написания коммитов;
- Makefile для удобного запуска команд;
- CI/CD:
- Telegram оповещение об успешных пулл реквестах;
- Линтинг;
- Тесты в докере;
- Автоматические билдинг документации;
- Удобные sh скрипты:
🎨 Функционал сервиса 🔝
- Хранение пользователей;
- Регистрация/вход/выход пользователей;
- Авторизация по протоколу OAuth2;
- Аутентификация по JWT;
- Управление разрешениями;
- История входов.
📚 Requirements 🔝
Для запуска проекта понадобится:
- Docker (version ^23.0.5). Инструкциям по установке;
- Docker compose (version ^2.17.3). Инструкциям по установке;
🚀 Быстрый старт 🔝
Все команды, приведенные в данном руководстве, выполняются из корневой директории проекта, если иное не указано в описании конкретной команды.
🛠 Настройка переменных окружения 🔝
Для запуска проекта потребуются переменные окружения, они хранятся в файле .env
. Создай файл .env
,
выполнив следующую команду:
make env
Если команды make
не доступны:
cp .env.template .env
Можно просто создать файл .env
копированием шаблона .env.template
.
🏁 Запуск проекта 🔝
Запустить проект в докере:
make run
Запустить тесты в докере:
make tests-docker