Skip to content

Lazarus-Phoenix/PhoneInvite

 
 

Repository files navigation

Реферальная система с авторизацией по телефону

Установка проекта

  1. Клонировать репозиторий:
https://github.com/Lazarus-Phoenix/PhoneInvite/tree/feature
cd PhoneInvite
  1. Запустить Docker контейнеры: (Аккуратнее с кнопками! , запускается с окна ниже напрямую из README)
docker-compose down -v
docker-compose build --no-cache
docker-compose up

API Endpoints

Авторизация по телефону

Отправка OTP

POST /auth/login/
Content-Type: application/json

{
    "phone": "+79999999999"
}

Проверка SMS-code

POST /auth/verify/
Content-Type: application/json

{
    "phone": "+79999999999",
    "SMS-code": "1234"
}

Профиль пользователя

Получение профиля

GET /profile/
Authorization: Token вставь свой токен сюда

Использование инвайт-кода

POST /profile/
Content-Type: application/json
Authorization: Token вставь свой токен сюда

{
    "invite_code": "ABC123" <--- сообщаешь инвайт код того под кого записываешься реферралом(если он дал его тебе)
}

Тестирование

В данно композиции возможно через Postman/Newman Если нужно тестировать API вручную или автоматизированно:

Используйте коллекции в Postman.

Экспортируйте её из :n
Docker test Collection.postman_collection.jsonn
Runsrver test Collection.postman_collection.jsonn
Запускайте автоматически через Newman:

Документация API

Доступна по адресу: http://localhost:8000/redoc/ в режиме разработки n
Доступна по адресу: http://0.0.0.0:8000/redoc/ в режиме запущенного контейнера n\

Postman коллекция

Доступна в корне проекта: n
Docker test Collection.postman_collection.jsonn
Runsrver test Collection.postman_collection.jsonn\

Описание реализованных задач:

В рамках данного проекта разработанна реферальная система, которая позволяет пользователям регистрироваться и авторизовываться по номеру телефона, а также использовать и распространять инвайт-коды. Эта система будет имеет минимальный интерфейс взаимодействия для тестирования(через Postman), однако вся логика работы с пользователями и их инвайт-кодами тщательно проработана и задокументирована.

Цель проекта — обеспечить простой и надежный механизм авторизации и реферальной системы, который можно легко тестировать и интегрировать в другие системы.

Релизовано:

** Логика и API для следующего функционала:**

  1. Авторизация по номеру телефона:

    • Пользователь вводит свой номер телефона для авторизации.n
      в данном исполнении реализованн псевдо SMS-code sender n\
    • Система имитирует отправку 4-значного кода авторизации (с задержкой на сервере 1-2 секунды).

Вместо иммитации можно использовать реальные сервисы по отправке СМС кодов, например, этот В коде этого проекта предусмотренны переменные окружения для взаимодействия с API подобных сервисов

  • Пользователь вводит полученный код для завершения процесса авторизации.

  • Если пользователь ранее не авторизовывался, его данные записываются в базу данных.

  1. Запрос на профиль пользователя:

    • При первой авторизации пользователю присваивается случайно сгенерированный 6-значный инвайт-код, состоящий из цифр и символов.

    • В профиле у пользователя должна быть возможность ввести чужой инвайт-код, при этом проверяется его существование в системе.

    • В профиле можно активировать только один инвайт-код. Если пользователь уже активировал инвайт-код, он отображается в соответствующем поле при запросе своего профиля пользователем.

    • API профиля выводит список пользователей (номеров телефона), которые ввели инвайт-код текущего пользователя.

  2. API документация:

    • Реализована и описана в README.md API для всего функционала, включая примеры запросов и ответов.

    • Документировано API с использованием ReDoc для удобной и понятной автодокументации.

  3. Интерфейс:

    • Реализован взаимодействием через Postman
  4. Контейнеризация:

    • Проект завернут в Docker для демонстрации запускается через docker-compose.

Технические требования:

  1. Язык программирования:

    • Python
  2. Фреймворк:

    • Django, DRF для реализации веб-сервера
  3. База данных:

    • PostgreSQL для хранения данных
  4. Контейнеризация:

    • Docker для контейнеризации приложения
  5. Документация:

    • В корне проекта файл README.md с описанием структуры проекта, инструкциями по установке и запуску, а также описанием API.
  6. Качество кода:

    • Стандарты PEP8 для Python кода.

    • Весь код храниться в удаленном Git репозитории.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors