Skip to content

Сервис авторизации c JWT, OAuth2 и функционалом ролей (Flask, PostgreSQL, Redis, Jaeger)

Notifications You must be signed in to change notification settings

xczdenis/movies_auth

Repository files navigation

Flask Swagger OAuth2.0 postgresql Docker Supported Python versions Supported Python versions Python Poetry

Auth-movies

🚪 API сервис авторизации для Онлайн кинотеатра

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 скрипты:
    • init.sh (make init) - инициализация проекта;
    • lint.sh (make lint) - линтинг (black, flake8, isort, autoflake);
    • format.sh (make format) - форматирование;

🎨 Функционал сервиса 🔝

  1. Хранение пользователей;
  2. Регистрация/вход/выход пользователей;
  3. Авторизация по протоколу OAuth2;
  4. Аутентификация по JWT;
  5. Управление разрешениями;
  6. История входов.

📚 Requirements 🔝

Для запуска проекта понадобится:

  1. Docker (version ^23.0.5). Инструкциям по установке;
  2. Docker compose (version ^2.17.3). Инструкциям по установке;

🚀 Быстрый старт 🔝

Все команды, приведенные в данном руководстве, выполняются из корневой директории проекта, если иное не указано в описании конкретной команды.

🛠 Настройка переменных окружения 🔝

Для запуска проекта потребуются переменные окружения, они хранятся в файле .env. Создай файл .env, выполнив следующую команду:

make env

Если команды make не доступны:

cp .env.template .env

Можно просто создать файл .env копированием шаблона .env.template.

🏁 Запуск проекта 🔝

Запустить проект в докере:

make run

Запустить тесты в докере:

make tests-docker

About

Сервис авторизации c JWT, OAuth2 и функционалом ролей (Flask, PostgreSQL, Redis, Jaeger)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published