{"id":26774802,"url":"https://github.com/fersus85/auth_service","last_synced_at":"2026-04-11T02:02:46.821Z","repository":{"id":283782349,"uuid":"904072786","full_name":"fersus85/Auth_service","owner":"fersus85","description":"Сервис обеспечивает регистрацию и аутентификацию пользователей, управление учетными записями и безопасность данных","archived":false,"fork":false,"pushed_at":"2025-03-22T05:49:17.000Z","size":327,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-22T06:26:45.597Z","etag":null,"topics":["docker","fastapi","jwt-authentication","nginx","postgresql","redis","sqlalchemy","typer-cli","uvicorn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fersus85.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-16T07:48:55.000Z","updated_at":"2025-03-22T05:49:18.000Z","dependencies_parsed_at":"2025-03-22T06:38:04.900Z","dependency_job_id":null,"html_url":"https://github.com/fersus85/Auth_service","commit_stats":null,"previous_names":["fersus85/auth_service"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fersus85%2FAuth_service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fersus85%2FAuth_service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fersus85%2FAuth_service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fersus85%2FAuth_service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fersus85","download_url":"https://codeload.github.com/fersus85/Auth_service/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246126714,"owners_count":20727595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","fastapi","jwt-authentication","nginx","postgresql","redis","sqlalchemy","typer-cli","uvicorn"],"created_at":"2025-03-29T02:18:22.722Z","updated_at":"2026-04-11T02:02:46.699Z","avatar_url":"https://github.com/fersus85.png","language":"Python","readme":"# Интеграция Auth Service с Admin_panel и Movie_API\nСсылка на репозитории с командной работой:\n- https://github.com/fersus85/Async_API_sprint_2 - сервис Movies_API\n- https://github.com/fersus85/Admin_panel - сервис админ панели\n\n## Мой вклад в проект\nВ рамках разработки Auth Service я выступал в роли тимлида и разработчика. Моя работа включала в себя:\n1. Лидерство и управление.\n    - Декомпозировал задание, выделил ключевые задачи и распределил их среди разработчиков.\n    - Управлял прогрессом и контролировал выполнение задач, следил за соблюдением дедлайнов.\n    - Обеспечивал качество кода, проводил код-ревью и контролировал соответствие стандартам разработки.\n    - Настроил работу через submodules GitHub\n    - Вёл Changelog.\n\n2. Разработка.\n    - Описал структуру проекта.\n    - Настроил создание superuser с помощью Typer.\n    - Описал OpenAPI документацию.\n    - Настроил oauth 2.0 через Yandex.\n    - Настроил трассировку запросов к API с помощью Jaeger\n    - Настроил миграции (Alembic), написал скрипт записи default ролей при поднятии сервиса.\n    - Настроил соединение с PostgreSQL и Redis.\n    - Описал централизованную обработку ошибок в сервисе.\n    - Настроил GitHub Actions для линтинга кода перед мерджем, улучшив процесс CI/CD.\n    - Описал все команды для Makefile, упростив запуск и управление проектом.\n    - Настроил интеграцию с Admin Panel.\n    - Написал README, документировав работу сервиса для разработчиков и пользователей.\n\n## Содержание\n- [Описание сервиса](#описание-сервиса)\n- [Основные функции](#основные-функции)\n- [Системные требования](#системные-требования)\n- [Стек](#стек)\n- [Настройки](#настройки)\n- Запуск\n  - [Makefile](#запуск-makefile)\n  - [Docker](#запуск-docker)\n- [Использование](#использование)\n- [Контакты и поддержка](#контакты-и-поддержка)\n- [Changelog](#changelog)\n\n## Описание сервиса\nОнлайн-кинотеатр, состоит из 3 сервисов, которые взаимодействуют друг с другом посредством API:\n- **Сервис Аутентификации**: Обеспечивает регистрацию и аутентификацию пользователей, управление учетными записями и безопасность данных.\n- **Сервис Выдачи контента**: Отвечает за предоставление и управление контентом, включая фильмы и сериалы, а также их метаданные. [документация](https://github.com/fersus85/Async_API_sprint_2/blob/main/README.md)\n- **Сервис Админ панели**: Предоставляет интерфейс для администраторов, позволяя управлять контентом. [документация](https://github.com/fersus85/Admin_panel/blob/main/README.md)\n\n## Основные функции\n- Регистрация пользователя.\n- Вход/выход пользователя в/из аккаунт(а).\n- Аутентификация пользователей с использованием безопасных методов хеширования паролей.\n- Функция изменения пароля.\n- Получение пользователем своей истории входов в аккаунт.\n- Управление ролями и правами доступа для различных уровней пользователей.\n- Создание суперпользователей с неограниченными правами.\n- Поддержка JWT (JSON Web Tokens) для безопасной передачи данных.\n\n## Системные требования\n- Python 3.10\n- Docker\n- Docker Compose\n- утилита make (опционально)\n\n## Стек\n- Язык программирования: Python 3.10\n- Веб-фреймворк: FastAPI\n  Используется для создания RESTful API.\n- Сервер: Uvicorn\n  Приложение запускается под управлением ASGI.\n- База данных: PostgreSQL\n  Используется для хранения информации о пользователях и ролях.\n- ORM: SQLAlchemy\n  Для работы с базой данных.\n- Миграции: Alembic\n  Для управления миграциями базы данных.\n- Кеширование: Redis Cluster\n  Используется для кеширования данных и хранения токенов.\n- Аутентификация: FastAPI JWT\n  Для работы с JSON Web Tokens.\n- Инструменты:\n  - Typer: Для создания командной строки.\n  - Werkzeug: Для хеширования паролей.\n- Веб-сервер: Nginx\n  Используется как обратный прокси-сервер.\n- Контейнеризация: Docker\n  Для упрощения развертывания и управления зависимостями.\n\n## Настройки\n1. Клонируйте репозиторий:\n```bash\n  git clone --recurse-submodules https://github.com/fersus85/Auth_sprint_2.git\n```\n2. Перейдите в директорию проекта:\n```bash\n  cd Auth_sprint_2\n```\n3. Инициалируйте и обновите подмодули\n```bash\ngit submodule init\ngit submodule update\n```\n4. Создайте сеть в докере:\n```bash\ndocker network create auth_network\n```\n5. Настройте .env файлы в сервисах Admin_panel и Movie_API (см. документацию к ним)\n6. Разместите в корне проекта файл .env, копируйте в него переменные из .env.example\n```bash\nREDIS_HOST=redis\nPOSTGRES_USER=app\nPOSTGRES_PASSWORD=ваш пароль\nPOSTGRES_DB=auth\nPOSTGRES_HOST=postgres\nPOSTGRES_PORT=5432\n```\n\n## Запуск Makefile\n### Auth\n1. Запустите сервис Аутентификации:\n```bash\nmake up-auth\n```\n2. Выполните миграции сервис Аутентификации:\n```bash\nmake db/migrate-auth\n```\n3. Подключитесь к контейнеру для создания superuser Аутентификации:\n```bash\nmake su-create\n```\n4. Создайте superuser Аутентификации:\n```bash\npython3 cli/superuser.py\n```\n### Admin\n2. Запустите сервис Админ панели:\n```bash\nmake up-admin\n```\n### Movies_API\n```bash\nmake up-movie\n```\n## Запуск Docker\n### Auth\n1. Запустите сервис Аутентификации:\n```bash\ndocker compose up -d --build\n```\n2. Выполните миграции сервис Аутентификации:\n```bash\ndocker compose exec fastapi-auth alembic upgrade head\n```\n3. Подключитесь к контейнеру для создания superuser Аутентификации:\n```bash\ndocker exec -it auth-service-fastapi-auth-1 bash\n```\n4. Создайте superuser Аутентификации:\n```bash\npython3 cli/superuser.py\n```\n### Admin\n2. Запустите сервис Админ панели:\n```bash\ndocker compose -f \u003cкорень проекта\u003e/Admin_panel/docker-compose.yml up -d --build\n```\n### Movies_API\n```bash\ndocker compose -f \u003cкорень проекта\u003e/Movies_API/docker-compose.yml up -d --build\n```\n## Makefile\nвсе команды makefile можно увидеть, вызвав\n```bash\n  make help\n```\n\n## Использование\nПосле запуска всех сервисов:\n- сервис Аутентификации работает на http://127.0.0.1:80 и https://127.0.0.1:443\n- сервис Админ панели работает на http://127.0.0.1:90\n- сервис Выдачи контента работает на http://127.0.0.1:8080\n\n- Для работы в админ панели пройдите по указанному адресу и введите логин и пароль сsuperuser.\n\n## Контакты и поддержка\nДля получения поддержки или вопросов обращайтесь по электронной почте:\n- **Тимлид**: deriabin_85@mail.ru\n- **Разработчик**: dmitcvetcov@yandex.ru\n- **Разработчик**: maximsonis@gmail.com\n\n# Changelog\n\n## [Версия 1.0.0] - 2024-12-04\n### Добавлено\n- Инициализирована структура папок\n- Настроены конфигурации Docker, Nginx\n\n## [Версия 1.0.1] - 2024-12-07\n### Добавлено\n- Настроены подключения к хранилищам PostgreSQL и Redis\n- Настроены миграции в бд PostgreSQL\n- Добавлен makefile\n- Описаны прототипы API\n\n## [Версия 1.0.2] - 2024-12-09\n### Добавлено\n- Добавлены модели SQLAlchemy для сервиса\n- Добавлен скрипт для миграций при старте сервиса\n### Исправлено\n- Изменена user schema\n\n## [Версия 1.0.3] - 2024-12-11\n### Добавлено\n- Добавлен сервис аутентификации\n- Добавлен сервис user\n### Исправлено\n- Дополнен скрипт миграций: записываются дефолтные роли\n\n## [Версия 1.0.4] - 2024-12-13\n### Добавлено\n- Добавлен основной функционал сервиса ролей\n- Добавлена консольная команда создания суперпользователя\n- Добавлены тесты для сервиса auth\n### Исправлено\n- Исправлены ошибки в импортах\n\n## [Версия 1.0.5] - 2024-12-14\n### Добавлено\n- Добавлена openapi документация\n- Добавлен централизованный обработчик ошибок\n- Добавлена команда для поднятия инфраструктуры для тестов\n- Добавлен эндпоинт для проверки наличия прав у пользователя\n- Добавлен Permission Cheker для защиты ручек admin\n### Исправлено\n- Исправлены ошибки в тестах\n\n## [Версия 1.0.6] - 2024-12-18\n### Добавлено\n- Инициализирована структура папок\n- Настроены конфигурации Docker, Nginx\n- Партицирована таблица с историей входов\n\n## [Версия 1.0.7] - 2024-12-22\n### Добавлено\n- Добавлен механизм ограничения количества запросов к серверу\n- Создана интеграцию Auth-сервиса с административной панелью\n- Обновлён makefile\n\n## [Версия 1.0.8] - 2024-12-24\n### Добавлено\n- Создана интеграцию Auth-сервиса с Movies сервисом\n- Обновлён makefile\n\n## [Версия 1.0.9] - 2024-12-25\n### Добавлено\n- Добавлена аутентификация с помощью Auth 2.0 Yandex\n- Добавлена поддержка ssl\n\n## [Версия 1.1.0] - 2024-12-27\n### Добавлено\n- Добавлена аутентификация с помощью Auth 2.0 VK\n- Добавлена трассировка сервиса Auth\n\n## [Версия 1.1.1] - 2024-12-28\n### Добавлено\n- Добавлена аутентификация с помощью Auth 2.0 Google\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffersus85%2Fauth_service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffersus85%2Fauth_service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffersus85%2Fauth_service/lists"}