https://github.com/miron-anosov/referapi
Referral API with JWT
https://github.com/miron-anosov/referapi
asyncio black docker-compose fastapi flake8 gunicorn isort jwt mypy poetry postgresql pre-commit python redis sqlalchemy
Last synced: 10 days ago
JSON representation
Referral API with JWT
- Host: GitHub
- URL: https://github.com/miron-anosov/referapi
- Owner: Miron-Anosov
- License: other
- Created: 2024-10-28T18:11:01.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-08T21:24:46.000Z (about 1 year ago)
- Last Synced: 2025-05-31T19:38:26.309Z (7 months ago)
- Topics: asyncio, black, docker-compose, fastapi, flake8, gunicorn, isort, jwt, mypy, poetry, postgresql, pre-commit, python, redis, sqlalchemy
- Language: Python
- Homepage:
- Size: 102 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Referral API Service
## Описание
Простой RESTful API сервис для реферальной системы, который позволяет пользователям регистрироваться, аутентифицироваться, создавать и использовать реферальные коды. Проект построен с использованием современных технологий и фокуса на чистоту, читаемость кода и устойчивость к неправильным действиям пользователя.
## Функциональные возможности
### Основные функции:
- **Регистрация и аутентификация пользователя** (JWT, OAuth 2.0)
- **Управление реферальным кодом**: аутентифицированный пользователь может создать или удалить свой реферальный код. В один момент времени активен только один код. При создании кода обязательно указывается срок его действия.
- **Запрос реферального кода по email реферера**
- **Регистрация по реферальному коду**: пользователи могут зарегистрироваться с использованием реферального кода, становясь рефералами.
- **Получение информации о рефералах** по `id` реферера
## Структура API
- **POST /api/user/new**: Регистрация нового пользователя c возможностью отправить реферальный код.
- **POST /api/user/referral**: Создание нового реферального кода (требует аутентификации)
- **DELETE /api/user/referral**: Удаление текущего реферального кода пользователя (требует аутентификации)
- **GET /api/user/referral?user_id=id**: Получение информации о рефералах по id реферера
- **GET /api/user/referral/email**: Получение реферального кода по email реферера
- **POST /api/auth/login**: Аутентификация пользователя и получение токена JWT
- **POST /api/auth/token**: Обновление токена JWT по refresh JWT
- **POST /api/auth/logout**: Удаление refresh JWT из куков.
## Как Запустить?
#### Получаем исходники:
```shell
git clone https://github.com/Miron-Anosov/ReferAPI.git
```
#### Создаем приватный ключ необходимый для JWT
```shell
openssl genrsa -out jwt-private.pem 2048
```
#### Теперь создаем на его основании публичный ключ.
```shell
openssl rsa -in src/certs/jwt-private.pem -outform PEM -pubout -out jwt-public.pem
```
#### Применяем .env.template
- Создаем `.env`
- Вписываем чувствительные данные в `.env` по шаблону `.env.template`
- В том числе сгенерированные ключи в соответсвующее поля.
#### Запускаем докер:
```shell
cd ./.;
docker compose up -d
```
#### Проверяем по адресу Swagger:
http://your-url:80/api/docs