Skip to content

Paymir121/authorization_sanic_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Приложение Sanic

Описание

Необходимо реализовать асинхронное веб приложение для авторизации пользователей в парадигме REST API.

Технологии

  • Ножовка и шашлык
  • Sanic
  • SQLAlchemy
  • Alembic
  • Docker
  • Python = 3.12

Запуск проекта в dev-режиме

Установите и активируйте виртуальное окружение WINDOWS

    python -m venv venv
    source .venv/Scripts/activate

Установите зависимости из файла requirements.txt

    pip install -r requirements.txt

Запустите приложение без докера

    cd sanic_app
    python api.py

или

    cd sanic_app
    sanic api

Запустите приложение докер

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

    docker compose up --build

Стек:

База данных - postgresql sqlalchemy - для работы с базой данных sanic - веб фреймворк(рекомендуемый, допускается альтернативный веб фрейморк НО НЕ DJANGO) docker compose

Необходимо реализовать работу со следующими сущностями:

Пользователь Администратор Счет - имеет баланс, привязан к пользователю Платеж(пополнение баланса) - хранит уникальный идентификатор и сумму пополнения счета пользователя

Пользователь должен иметь следующие возможности:

Авторизоваться по email/password Получить данные о себе(id, email, full_name) Получить список своих счетов и балансов Получить список своих платежей

Администратор должен иметь следующие возможности:

Авторизоваться по email/password Получить данные о себе (id, email, full_name) Создать/Удалить/Обновить пользователя Получить список пользователей и список его счетов с балансами

Для работы с платежами должен быть реализован роут эмулирующий обработку вебхука от сторонней платежной системы.

Структура json-объекта для обработки вебхука должна состоять из следующих полей: transaction_id - уникальный идентификатор транзакции в “сторонней системе” account_id - уникальный идентификатор счета пользователя user_id - уникальный идентификатор счета пользователя amount - сумма пополнения счета пользователя signature - подпись объекта

signature должна формироваться через SHA256 хеш, для строки состоящей из конкатенации значений объекта в алфавитном порядке ключей и “секретного ключа” хранящегося в конфигурации проекта ({account_id}{amount}{transaction_id}{user_id}{secret_key}).

Пример, для secret_key gfdmhghif38yrf9ew0jkf32: { "transaction_id": "5eae174f-7cd0-472c-bd36-35660f00132b", "user_id": 1, "account_id": 1, "amount": 100, "signature": "7b47e41efe564a062029da3367bde8844bea0fb049f894687cee5d57f2858bc8" }

При обработке вебхука необходимо:

Проверить подпись объекта Проверить существует ли у пользователя такой счет - если нет, его необходимо создать Сохранить транзакцию в базе данных Начислить сумму транзакции на счет пользователя

Транзакции являются уникальными, начисление суммы с одним transaction_id должно производиться только один раз.

Для тестирования приложения в миграции должен быть создан:

Тестовый пользователь Счет тестового пользователя Тестовый администратор

Для развертывания проекта необходимо реализовать docker compose конфигурацию состоящую из сервиса postgresql и сервиса приложения.

К реализованному заданию должна прилагаться краткая инструкция по запуску проекта в двух вариантах - с использованием docker compose и без него. В инструкции также должны быть предоставлены email/password для пользователя и администратора по умолчанию созданных в миграции.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors