Skip to content

Логика API личных кабинетов, в которых пользователи выбирают приглашения других пользователей.

Notifications You must be signed in to change notification settings

mikepavlos/users_voting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

users_voting

Логика API профилей, в которых пользователи выбирают приглашения других пользователей.

Описание

Авторизованные пользователи могут заходить в свой профиль, в котором отображается информация:

  • личный пригласительный шести значный код (invite-code)
  • поле для ввода кода другого участника (отображается либо пустое поле, либо активированный invite-code)
  • список других участников, активировавших код пользователя (их номера телефонов)

Пользователь может активировать код другого участника только один раз, таким образом, выбрать одного участника (проголосовать).
Голосовать (выбирать приглашение) самого себя нельзя.

Авторизация для входа в профиль проходит по номеру телефона в формате <9991234567>.
В ответ приходит четырех значный код, который необходимо ввести для получения токена.
Если номера телефона нет в базе - он сохраняется, создается новый пользователь, его профиль и присваивается invite-code; если есть - выдается новый код для получения токена.
Пароль не вводится, используется код и выдача по нему токена.

Стэк

  • Python 3.11.2
  • Django 4.2.4
  • DjangoRestFramework 3.14.0
  • Djangorestframework-simplejwt 5.3.0
  • Postgres 15.1
  • Docker

Разворачивание проекта

Клонировать проект с GitHub

git clone https://github.com/mikepavlos/users_voting.git

Перейти в папку inviting_app, переименовать файл с переменными окружения .env.example в .env и заполнить его своими значениями.

Запустить кнтейнеры Docker

docker compose up -d --build

Адреса запросов localhost:8000

/docs - swagger
/redoc - redoc
POST /api/auth/signup - для подачи номера телефона в 10-ти значном формате / возвращает 4-значный код.
POST /api/auth/login - передача полученного 4-ти значного кода для авторизации / возвращает токен.
GET /api/v1/profiles/me - личный профиль пользователя с информацией.
POST /api/v1/profiles/me - ввод 6-ти значного инвайт-кода другого участника / возвращает обновленную информацию профиля с добавленным кодом участника.
GET-запрос на получение всех профилей api/v1/profiles доступен только администратору.

Автор

Михаил Павлов
telegram https://t.me/miha1is
GitHub https://github.com/mikepavlos
email mike_pavlovsky@hotmail.com

Разработать

Pytest контейнер для тестирования эндпоинтов

About

Логика API личных кабинетов, в которых пользователи выбирают приглашения других пользователей.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published