Разработать RESTful API сервис аутентификации пользователей.
- Регистрировать пользователей.
- Аутентифицировать пользователей.
- Выдавать список пользователей с пагинацией.
- Выдавать информацию о пользователе по ID.
- Удалять пользователей по ID.
- Менять пароль пользователя.
- /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