-
python3.11. Установка описана тут
-
Docker. Как установить docker описано тут
-
PostgreSQL. Запустить команду
docker run -d -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust --name db-auth_api postgres:15- Опционально Kafka Cluster(если планиурется запускать userdata worker). Запуск описан тут
- Откройте консоль
- Перейдите в папку с проектами
git clone https://github.com/profcomff/auth-api.git- Если у вас нет docker, то качайте его: https://www.docker.com/products/docker-desktop/
- Выполните
docker run -d -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust --name db-auth_api postgres:15 - Зайдите в проект
- Создайте виртуальные окружение: https://docs.python.org/3/library/venv.html
- Активируйте виртуальное окружение: https://docs.python.org/3/library/venv.html
- pip install -r requirements.txt requirements.dev.txt
DB_DSN=postgresql://postgres@localhost:5432/postgres alembic upgrade head- Заполните .env файл. Для каждого из методов авторизации есть свои параметры в .env файле, если вам не нужен какой то из методов, его параметры могут быть none. Вставьте туда DB_DSN=postgresql://postgres@localhost:5432/postgres
python3 -m pytest --verbosity=2 --showlocals --log-level=DEBUG- должны все пройти- Запуск проекта производится командой
python -m auth_backend start
- Поставьте docker
- Скачайте актуальный образ: docker pull ghcr.io/profcomff/auth-api:test
docker run \
--detach \
-p 80:80 \
--env DB_DSN='postgresql://...' \
--env APPLICATION_HOST='https://localhost' \
--env LKMSU_TEMPTOKEN='123' \
--name "auth-api" \
ghcr.io/profcomff/auth-api:test
- Вы великолепны
- Создайте юзера
python -m auth_backend user create --email <email> --password <password> - Создайте скоупы, которые вам надо(минимум это auth.scope.create, auth.group.create, auth.group.patch, auth.user.patch)
python -m auth_backend scope create --name <email> --creator <user_id(придет в ответе после создания юзера)>, --comment <comment>- выполнить команду придется несколько раз - Создайте группу root
python -m auth_backend group create --name root --scopes <scopes>Пример:python -m auth_backend group create --name root --scopes 1 2 3 4 - Добавьте рут юзера в рут группу
python -m auth_backend user_group create --user_id <user_id(придет в ответе после создания юзера)> --group_id <group_id(придет в ответе после создания группы)> - Все, можно дальше создавать от имени рута все, что вы хотите
- Зайдите на сервер
docker exec -it com_profcomff_auth_api_test bashилиdocker exec -it com_profcomff_auth_api bash- Создайте юзера
python -m auth_backend user create --email <email> --password <password> - Создайте скоупы, которые вам надо(минимум это auth.scope.create, auth.group.create, auth.group.patch, auth.user.patch)
python -m auth_backend scope create --name <email> --creator <user_id(придет в ответе после создания юзера)>, --comment <comment>- выполнить команду придется несколько раз - Создайте группу root
python -m auth_backend group create --name root --scopes <scopes>Пример:python -m auth_backend group create --name root --scopes 1 2 3 4 - Добавьте рут юзера в рут группу
python -m auth_backend user_group create --user_id <user_id(придет в ответе после создания юзера)> --group_id <group_id(придет в ответе после создания группы)> - Все, можно дальше создавать от имени рута все, что вы хотите
- Для каждого из методов аутентификации есть свои ключи
DB_DSN– Адрес базы данных в фаорматеpostgresql://admin:admin@localhost:5432/devEMAIL– Адрес электронной почты (логин для входа) для отправки уведомлений по EmailEMAIL_PASS– Пароль от электронной почтыHOST– Хост для использования в шаблонах сообщений электронной почты
GOOGLE_REDIRECT_URL: str– URL адрес страницы для получения данных авторизации на нашем фронтэндеGOOGLE_SCOPES: list[str]– Запрашиваемые у гугла права на управление аккаунтом, по умолчанию запрашивает данные пользователяGOOGLE_CREDENTIALS: Json– Данные приложения Google, получить можно в Google Cloud Console
PHYSICS_REDIRECT_URL: str– см. секцию GooglePHYSICS_SCOPES: list[str]– см. секцию GooglePHYSICS_CREDENTIALS: Json– см. секцию Google
LKMSU_REDIRECT_URL– URL адрес страницы для получения данных авторизации на нашем фронтэнде
YANDEX_REDIRECT_URL– URL адрес страницы для получения данных авторизации на нашем фронтэндеYANDEX_CLIENT_ID- ID приложения, созданного в ЯндексеYANDEX_CLIENT_SECRET- Ключ для получения токена пользователя в Яндексе
MYMSU_REDIRECT_URL– см. секцию YandexMYMSU_CLIENT_ID- см. секцию YandexMYMSU_CLIENT_SECRET- см. секцию Yandex
TELEGRAM_REDIRECT_URL– URL адрес страницы для получения данных авторизации на нашем фронтэндеTELEGRAM_BOT_TOKEN- Токен бота приложения
Чтобы получить ключи, вам надо регистрировать приложения в облаках этих ресурсов https://yandex.ru/dev/id/doc/ru/register-client
https://core.telegram.org/bots#3-how-do-i-create-a-bot
https://dev.vk.com/api/access-token/getting-started
https://console.cloud.google.com/welcome?project=design-school-api
https://pypi.org/project/auth-lib-profcomff/
DB_DSN=postgresql://postgres@localhost:5432/postgres
-
KAFKA_DSN=loacalhost:9092 -
KAFKA_TOPICS='["dev-user-login"]'