https://github.com/fersus85/auth_service
Сервис обеспечивает регистрацию и аутентификацию пользователей, управление учетными записями и безопасность данных
https://github.com/fersus85/auth_service
docker fastapi jwt-authentication nginx postgresql redis sqlalchemy typer-cli uvicorn
Last synced: 11 months ago
JSON representation
Сервис обеспечивает регистрацию и аутентификацию пользователей, управление учетными записями и безопасность данных
- Host: GitHub
- URL: https://github.com/fersus85/auth_service
- Owner: fersus85
- Created: 2024-12-16T07:48:55.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-22T05:49:17.000Z (11 months ago)
- Last Synced: 2025-03-22T06:26:45.597Z (11 months ago)
- Topics: docker, fastapi, jwt-authentication, nginx, postgresql, redis, sqlalchemy, typer-cli, uvicorn
- Language: Python
- Homepage:
- Size: 319 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Интеграция Auth Service с Admin_panel и Movie_API
Ссылка на репозитории с командной работой:
- https://github.com/fersus85/Async_API_sprint_2 - сервис Movies_API
- https://github.com/fersus85/Admin_panel - сервис админ панели
## Мой вклад в проект
В рамках разработки Auth Service я выступал в роли тимлида и разработчика. Моя работа включала в себя:
1. Лидерство и управление.
- Декомпозировал задание, выделил ключевые задачи и распределил их среди разработчиков.
- Управлял прогрессом и контролировал выполнение задач, следил за соблюдением дедлайнов.
- Обеспечивал качество кода, проводил код-ревью и контролировал соответствие стандартам разработки.
- Настроил работу через submodules GitHub
- Вёл Changelog.
2. Разработка.
- Описал структуру проекта.
- Настроил создание superuser с помощью Typer.
- Описал OpenAPI документацию.
- Настроил oauth 2.0 через Yandex.
- Настроил трассировку запросов к API с помощью Jaeger
- Настроил миграции (Alembic), написал скрипт записи default ролей при поднятии сервиса.
- Настроил соединение с PostgreSQL и Redis.
- Описал централизованную обработку ошибок в сервисе.
- Настроил GitHub Actions для линтинга кода перед мерджем, улучшив процесс CI/CD.
- Описал все команды для Makefile, упростив запуск и управление проектом.
- Настроил интеграцию с Admin Panel.
- Написал README, документировав работу сервиса для разработчиков и пользователей.
## Содержание
- [Описание сервиса](#описание-сервиса)
- [Основные функции](#основные-функции)
- [Системные требования](#системные-требования)
- [Стек](#стек)
- [Настройки](#настройки)
- Запуск
- [Makefile](#запуск-makefile)
- [Docker](#запуск-docker)
- [Использование](#использование)
- [Контакты и поддержка](#контакты-и-поддержка)
- [Changelog](#changelog)
## Описание сервиса
Онлайн-кинотеатр, состоит из 3 сервисов, которые взаимодействуют друг с другом посредством API:
- **Сервис Аутентификации**: Обеспечивает регистрацию и аутентификацию пользователей, управление учетными записями и безопасность данных.
- **Сервис Выдачи контента**: Отвечает за предоставление и управление контентом, включая фильмы и сериалы, а также их метаданные. [документация](https://github.com/fersus85/Async_API_sprint_2/blob/main/README.md)
- **Сервис Админ панели**: Предоставляет интерфейс для администраторов, позволяя управлять контентом. [документация](https://github.com/fersus85/Admin_panel/blob/main/README.md)
## Основные функции
- Регистрация пользователя.
- Вход/выход пользователя в/из аккаунт(а).
- Аутентификация пользователей с использованием безопасных методов хеширования паролей.
- Функция изменения пароля.
- Получение пользователем своей истории входов в аккаунт.
- Управление ролями и правами доступа для различных уровней пользователей.
- Создание суперпользователей с неограниченными правами.
- Поддержка JWT (JSON Web Tokens) для безопасной передачи данных.
## Системные требования
- Python 3.10
- Docker
- Docker Compose
- утилита make (опционально)
## Стек
- Язык программирования: Python 3.10
- Веб-фреймворк: FastAPI
Используется для создания RESTful API.
- Сервер: Uvicorn
Приложение запускается под управлением ASGI.
- База данных: PostgreSQL
Используется для хранения информации о пользователях и ролях.
- ORM: SQLAlchemy
Для работы с базой данных.
- Миграции: Alembic
Для управления миграциями базы данных.
- Кеширование: Redis Cluster
Используется для кеширования данных и хранения токенов.
- Аутентификация: FastAPI JWT
Для работы с JSON Web Tokens.
- Инструменты:
- Typer: Для создания командной строки.
- Werkzeug: Для хеширования паролей.
- Веб-сервер: Nginx
Используется как обратный прокси-сервер.
- Контейнеризация: Docker
Для упрощения развертывания и управления зависимостями.
## Настройки
1. Клонируйте репозиторий:
```bash
git clone --recurse-submodules https://github.com/fersus85/Auth_sprint_2.git
```
2. Перейдите в директорию проекта:
```bash
cd Auth_sprint_2
```
3. Инициалируйте и обновите подмодули
```bash
git submodule init
git submodule update
```
4. Создайте сеть в докере:
```bash
docker network create auth_network
```
5. Настройте .env файлы в сервисах Admin_panel и Movie_API (см. документацию к ним)
6. Разместите в корне проекта файл .env, копируйте в него переменные из .env.example
```bash
REDIS_HOST=redis
POSTGRES_USER=app
POSTGRES_PASSWORD=ваш пароль
POSTGRES_DB=auth
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
```
## Запуск Makefile
### Auth
1. Запустите сервис Аутентификации:
```bash
make up-auth
```
2. Выполните миграции сервис Аутентификации:
```bash
make db/migrate-auth
```
3. Подключитесь к контейнеру для создания superuser Аутентификации:
```bash
make su-create
```
4. Создайте superuser Аутентификации:
```bash
python3 cli/superuser.py
```
### Admin
2. Запустите сервис Админ панели:
```bash
make up-admin
```
### Movies_API
```bash
make up-movie
```
## Запуск Docker
### Auth
1. Запустите сервис Аутентификации:
```bash
docker compose up -d --build
```
2. Выполните миграции сервис Аутентификации:
```bash
docker compose exec fastapi-auth alembic upgrade head
```
3. Подключитесь к контейнеру для создания superuser Аутентификации:
```bash
docker exec -it auth-service-fastapi-auth-1 bash
```
4. Создайте superuser Аутентификации:
```bash
python3 cli/superuser.py
```
### Admin
2. Запустите сервис Админ панели:
```bash
docker compose -f <корень проекта>/Admin_panel/docker-compose.yml up -d --build
```
### Movies_API
```bash
docker compose -f <корень проекта>/Movies_API/docker-compose.yml up -d --build
```
## Makefile
все команды makefile можно увидеть, вызвав
```bash
make help
```
## Использование
После запуска всех сервисов:
- сервис Аутентификации работает на http://127.0.0.1:80 и https://127.0.0.1:443
- сервис Админ панели работает на http://127.0.0.1:90
- сервис Выдачи контента работает на http://127.0.0.1:8080
- Для работы в админ панели пройдите по указанному адресу и введите логин и пароль сsuperuser.
## Контакты и поддержка
Для получения поддержки или вопросов обращайтесь по электронной почте:
- **Тимлид**: deriabin_85@mail.ru
- **Разработчик**: dmitcvetcov@yandex.ru
- **Разработчик**: maximsonis@gmail.com
# Changelog
## [Версия 1.0.0] - 2024-12-04
### Добавлено
- Инициализирована структура папок
- Настроены конфигурации Docker, Nginx
## [Версия 1.0.1] - 2024-12-07
### Добавлено
- Настроены подключения к хранилищам PostgreSQL и Redis
- Настроены миграции в бд PostgreSQL
- Добавлен makefile
- Описаны прототипы API
## [Версия 1.0.2] - 2024-12-09
### Добавлено
- Добавлены модели SQLAlchemy для сервиса
- Добавлен скрипт для миграций при старте сервиса
### Исправлено
- Изменена user schema
## [Версия 1.0.3] - 2024-12-11
### Добавлено
- Добавлен сервис аутентификации
- Добавлен сервис user
### Исправлено
- Дополнен скрипт миграций: записываются дефолтные роли
## [Версия 1.0.4] - 2024-12-13
### Добавлено
- Добавлен основной функционал сервиса ролей
- Добавлена консольная команда создания суперпользователя
- Добавлены тесты для сервиса auth
### Исправлено
- Исправлены ошибки в импортах
## [Версия 1.0.5] - 2024-12-14
### Добавлено
- Добавлена openapi документация
- Добавлен централизованный обработчик ошибок
- Добавлена команда для поднятия инфраструктуры для тестов
- Добавлен эндпоинт для проверки наличия прав у пользователя
- Добавлен Permission Cheker для защиты ручек admin
### Исправлено
- Исправлены ошибки в тестах
## [Версия 1.0.6] - 2024-12-18
### Добавлено
- Инициализирована структура папок
- Настроены конфигурации Docker, Nginx
- Партицирована таблица с историей входов
## [Версия 1.0.7] - 2024-12-22
### Добавлено
- Добавлен механизм ограничения количества запросов к серверу
- Создана интеграцию Auth-сервиса с административной панелью
- Обновлён makefile
## [Версия 1.0.8] - 2024-12-24
### Добавлено
- Создана интеграцию Auth-сервиса с Movies сервисом
- Обновлён makefile
## [Версия 1.0.9] - 2024-12-25
### Добавлено
- Добавлена аутентификация с помощью Auth 2.0 Yandex
- Добавлена поддержка ssl
## [Версия 1.1.0] - 2024-12-27
### Добавлено
- Добавлена аутентификация с помощью Auth 2.0 VK
- Добавлена трассировка сервиса Auth
## [Версия 1.1.1] - 2024-12-28
### Добавлено
- Добавлена аутентификация с помощью Auth 2.0 Google