Skip to content

Code of Auth Service in microservices architecture (FastAPI, PostgreSQL, Redis, Pytest, Ruff)

Notifications You must be signed in to change notification settings

Daniil-Solo/PastaBeanAuthService

Repository files navigation

Сервис авторизации проекта "PastaBean"

Функицональные требования

Для анонимного пользователя доступно:

  • регистрация аккаунта (email, login, password) - учесть уникальность email
  • вход в аккаунт через email и password
  • сброс пароля

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

  • изменение пароля
  • изменение логина
  • просмотр активных сессий (время входа, User Agent)
  • выход из системы

Нефункциональные требования

  • безопасность
  • скорость ответа

Детали реализации

Инфраструктура

Для сервиса потребуются два хранилища:

  • PostgreSQL - для хранения информации о пользователях и всех сессиях
  • Redis - для хранения активных сессий и кодов для двухфакторной аутентификации

Модель данных

erDiagram
    User {
        serial id
        varchar name
        varchar email
        timestamp created_at
    }
    User ||--|| SecureUserInfo : has
    SecureUserInfo{
        serial id
        varchar hashed_password
        varchar salt
        timestamp updated_at
    }
    User ||--|{ SignIn : "logins with"
    SignIn{
        serial id
        varchar user_agent
        varchar auth_token
        timestamp created_at
        bool is_logout
        timestamp logout_at
    }
Loading

Архитектура

В сервисе явно выделены сервисы с бизнес-логикой, который оперируют интерфейсами репозиториев, которые в свою очередь ответственны за доступ к данным. Для юнит-тестов используются репозитории, которые хранят данные в оперативной памяти.

Локальная разработка

Запуск инфраструктуры

docker-compose up -d

Запуск тестов

Юнит-тесты

Для визуализации можно поднять allure с помощью docker-compose

# docker compose -f docker-compose.test.yaml up
poetry run pytest tests --alluredir=allure-results

Интеграционные тесты

Для поднятие зависимых сервисов используется docker-compose

docker compose -f docker-compose.test.yaml up
poetry run pytest tests --alluredir=allure-results

About

Code of Auth Service in microservices architecture (FastAPI, PostgreSQL, Redis, Pytest, Ruff)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published