Skip to content

RESTful API сервис аутентификации пользователей. Стек использованных технлогий: Python, Flask, Sqlalchemy, PostgresSQL, Pytest, RESTful API

Notifications You must be signed in to change notification settings

aquaracer/RESTful-API-User-Authentification-Flask-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RESTful API сервис аутентификации пользователей.

Техническое задание:

Разработать RESTful API сервис аутентификации пользователей.

Сервис должен уметь:

  • Регистрировать пользователей.
  • Аутентифицировать пользователей.
  • Выдавать список пользователей с пагинацией.
  • Выдавать информацию о пользователе по ID.
  • Удалять пользователей по ID.
  • Менять пароль пользователя.

Сервис должен предоставлять RESTful API.

  • /users GET page_num: int, page_size: int (список пользователей)
  • /user POST login: str, password: str (регистрация пользователя)
  • /user GET id: int (просмотр данных о пользователе, пока что только логин)
  • /user DELETE id: int (удаление пользователя)
  • /user PATCH id: int, password: str (смена пароля)
  • / POST login: str, password: str (выдача токена, собственно, аутентификация)

В ответ на любой из запросов сервис возвращает JSON с информацией и статус код. В случае возникновения ошибок возвращаться информация об ошибке и соответствующий статус код.

  • 200 - ОК
  • 201 - Created (запись создана)
  • 400 - Bad Request (некорректный запрос пользователя)
  • 404 - Not Found (не найдено)
  • 500 - InternalServerError (ошибка сервера)

Бэкенд.

Бэкенд реализовать на flask. Для запуска ипользовать pywsgi из gevent.

Базы данных

В качестве ORM использовать sqlalchemy. В качестве СУБД использовать PostgresSQL. Для приложения создать отдельного пользователя и отдельную базу данных, выдать ему права на эту базу данных.Для безопасного взаимодействия с базой использовать contextmanager.


Аутентификация

Аутентификация должна происходить с помощью JWT. Payload токена должен содержать id пользователя (user_id) дату экспирации (exp) и название сервиса отправителя (iss)

Конфигурация

Должно быть 3 типа конфигурации: development, testing, production.
То, какая конфигурация используется сейчас определяем через environment переменную APP_SETTINGS.

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


Провести тестирование сервиса посредством Pytest.

Установка приложения

git clone https://github.com/aquaracer/RESTful-API-User-Authentification-Flask-.git user_auth_app
cd user_auth_app
python3 -m venv env
./env/bin/activate
pip install -r requirements.txt

Запуск сервиса

python3 main.py

Запуск тестов

pytest test.py

About

RESTful API сервис аутентификации пользователей. Стек использованных технлогий: Python, Flask, Sqlalchemy, PostgresSQL, Pytest, RESTful API

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages