Skip to content

Commit b17d6a5

Browse files
authored
Docs
1 parent e5a1cc1 commit b17d6a5

1 file changed

Lines changed: 102 additions & 6 deletions

File tree

CONTRIBUTING.md

Lines changed: 102 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,108 @@ docker run -d -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust --name db-auth_api
1111

1212
4. Опционально Kafka Cluster(если планиурется запускать userdata worker). Запуск описан [тут](https://github.com/profcomff/db-kafka)
1313

14-
## Перед разработкой стоит почитать
15-
- Гайд по разработке Auth API. Он вынесен в [wiki](https://github.com/profcomff/.github/wiki/Сервис-авторизации)
14+
## Как подготовиться к локальной разработке
15+
1. Откройте консоль
16+
2. Перейдите в папку с проектами
17+
3. `git clone https://github.com/profcomff/auth-api.git`
18+
4. Если у вас нет docker, то качайте его: https://www.docker.com/products/docker-desktop/
19+
5. Выполните `docker run -d -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust --name db-auth_api postgres:15`
20+
6. Зайдите в проект
21+
7. Создайте виртуальные окружение: https://docs.python.org/3/library/venv.html
22+
8. Активируйте виртуальное окружение: https://docs.python.org/3/library/venv.html
23+
9. pip install -r requirements.txt requirements.dev.txt
24+
10. `DB_DSN=postgresql://postgres@localhost:5432/postgres alembic upgrade head`
25+
11. Заполните .env файл. Для каждого из методов авторизации есть свои параметры в .env файле, если вам не нужен какой то из методов, его параметры могут быть none. Вставьте туда DB_DSN=postgresql://postgres@localhost:5432/postgres
26+
12. `python3 -m pytest --verbosity=2 --showlocals --log-level=DEBUG` - должны все пройти
27+
13. Запуск проекта производится командой `python -m auth_backend start`
28+
29+
## Как запустить контейнер локально
30+
0. Поставьте docker
31+
1. Скачайте актуальный образ: docker pull ghcr.io/profcomff/auth-api:test
32+
2.
33+
```
34+
docker run \
35+
--detach \
36+
-p 80:80 \
37+
--env DB_DSN='postgresql://...' \
38+
--env APPLICATION_HOST='https://localhost' \
39+
--env LKMSU_TEMPTOKEN='123' \
40+
--name "auth-api" \
41+
ghcr.io/profcomff/auth-api:test
42+
```
43+
3. Вы великолепны
44+
45+
## Как пользоваться(создать рута) CLI без докера
46+
1. Создайте юзера `python -m auth_backend user create --email <email> --password <password>`
47+
2. Создайте скоупы, которые вам надо(минимум это 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>` - выполнить команду придется несколько раз
48+
3. Создайте группу root `python -m auth_backend group create --name root --scopes <scopes>`
49+
Пример: `python -m auth_backend group create --name root --scopes 1 2 3 4`
50+
4. Добавьте рут юзера в рут группу `python -m auth_backend user_group create --user_id <user_id(придет в ответе после создания юзера)> --group_id <group_id(придет в ответе после создания группы)>`
51+
5. Все, можно дальше создавать от имени рута все, что вы хотите
52+
53+
54+
## Как пользоваться(создать рута) CLI в докере
55+
1. Зайдите на сервер
56+
2. `docker exec -it com_profcomff_auth_api_test bash` или `docker exec -it com_profcomff_auth_api bash`
57+
3. Создайте юзера `python -m auth_backend user create --email <email> --password <password>`
58+
4. Создайте скоупы, которые вам надо(минимум это 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>` - выполнить команду придется несколько раз
59+
5. Создайте группу root `python -m auth_backend group create --name root --scopes <scopes>`
60+
Пример: `python -m auth_backend group create --name root --scopes 1 2 3 4`
61+
6. Добавьте рут юзера в рут группу `python -m auth_backend user_group create --user_id <user_id(придет в ответе после создания юзера)> --group_id <group_id(придет в ответе после создания группы)>`
62+
7. Все, можно дальше создавать от имени рута все, что вы хотите
63+
64+
65+
## Как сделать, чтоб методы аутентификации не 500тили
66+
1. Для каждого из методов аутентификации есть свои ключи
67+
68+
Вот их описание
69+
---
70+
71+
## ENV-file description
72+
73+
- `DB_DSN` – Адрес базы данных в фаормате `postgresql://admin:admin@localhost:5432/dev`
74+
- `EMAIL` – Адрес электронной почты (логин для входа) для отправки уведомлений по Email
75+
- `EMAIL_PASS` – Пароль от электронной почты
76+
- `HOST` – Хост для использования в шаблонах сообщений электронной почты
77+
78+
### Google
79+
- `GOOGLE_REDIRECT_URL: str` – URL адрес страницы для получения данных авторизации на нашем фронтэнде
80+
- `GOOGLE_SCOPES: list[str]` – Запрашиваемые у гугла права на управление аккаунтом, по умолчанию запрашивает данные пользователя
81+
- `GOOGLE_CREDENTIALS: Json` – Данные приложения Google, получить можно в Google Cloud Console
82+
83+
### Physics
84+
- `PHYSICS_REDIRECT_URL: str` – см. секцию *Google*
85+
- `PHYSICS_SCOPES: list[str]` – см. секцию *Google*
86+
- `PHYSICS_CREDENTIALS: Json` – см. секцию *Google*
87+
88+
### LK MSU
89+
- `LKMSU_REDIRECT_URL` – URL адрес страницы для получения данных авторизации на нашем фронтэнде
90+
91+
### Yandex
92+
- `YANDEX_REDIRECT_URL` – URL адрес страницы для получения данных авторизации на нашем фронтэнде
93+
- `YANDEX_CLIENT_ID` - ID приложения, созданного в Яндексе
94+
- `YANDEX_CLIENT_SECRET` - Ключ для получения токена пользователя в Яндексе
95+
96+
### MYMSU
97+
- `MYMSU_REDIRECT_URL` – см. секцию *Yandex*
98+
- `MYMSU_CLIENT_ID` - см. секцию *Yandex*
99+
- `MYMSU_CLIENT_SECRET` - см. секцию *Yandex*
100+
101+
### Telegram
102+
- `TELEGRAM_REDIRECT_URL` – URL адрес страницы для получения данных авторизации на нашем фронтэнде
103+
- `TELEGRAM_BOT_TOKEN` - Токен бота приложения
104+
---
105+
Чтобы получить ключи, вам надо регистрировать приложения в облаках этих ресурсов
106+
https://yandex.ru/dev/id/doc/ru/register-client
107+
108+
https://core.telegram.org/bots#3-how-do-i-create-a-bot
109+
110+
https://dev.vk.com/api/access-token/getting-started
111+
112+
https://console.cloud.google.com/welcome?project=design-school-api
113+
114+
## Где взять готовые либы аутентификации
115+
https://pypi.org/project/auth-lib-profcomff/
16116

17117
## Какие переменные нужны для запуска
18118
- `DB_DSN=postgresql://postgres@localhost:5432/postgres`
@@ -22,10 +122,6 @@ docker run -d -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust --name db-auth_api
22122

23123
- `KAFKA_TOPICS='["dev-user-login"]'`
24124

25-
### Если надо тестировать методы авторизации
26-
- Процесс получения ключей и их описание есть в README и [тут](https://github.com/profcomff/.github/wiki/Сервис-авторизации)
27-
28-
29125
## Codestyle
30126

31127
- Black. Как пользоваться описано [тут](https://black.readthedocs.io/en/stable/)

0 commit comments

Comments
 (0)