Skip to content

Latest commit

 

History

History
78 lines (50 loc) · 3.61 KB

README.md

File metadata and controls

78 lines (50 loc) · 3.61 KB

goit_python_web_hw_12

GoIT, Python WEB, Homework number 12. FastAPI. PostgreSQL. Docker. REST API. ORM SQLAlchemy. Pydantic. Bootstraps CSS. Jinga. Alembic. OAuth2. JWT.

Домашнє завдання #12

У цьому домашньому завданні ми продовжуємо доопрацьовувати наш REST API додаток із домашнього завдання 11.

Завдання

  • Реалізуйте механізм аутентифікації в додатку;
  • Реалізуйте механізм авторизації за допомогою JWT токенів, щоб усі операції з контактами проводилися тільки зареєстрованими користувачами;
  • Користувач має доступ тільки до своїх операцій з контактами;

Загальні вимоги

  • Під час реєстрації, якщо користувач уже існує з таким email, сервер поверне помилку HTTP 409 Conflict;
  • Сервер хешує пароль і не зберігає його у відкритому вигляді в базі даних;
  • У разі успішної реєстрації користувача сервер має повернути HTTP статус відповіді 201 Created і дані нового користувача;
  • Для всіх операцій POST створення нового ресурсу, сервер повертає статус 201 Created;
  • Під час операції POST аутентифікація користувача, сервер приймає запит із даними користувача (email, пароль) у тілі запиту;
  • Якщо користувач не існує або пароль не збігається, то повертається помилка HTTP 401 Unauthorized;
  • Механізм авторизації за допомогою JWT токенів реалізовано парою токенів: токена доступу access_token і токен оновлення refresh_token;

Рішення

Механізм аутентифікації в додатку

Create user

Create user

Login user OAuth2

Login user

Access by token JWT

Access user

Механізм авторизації за допомогою JWT токенів, щоб усі операції з контактами проводилися тільки зареєстрованими користувачами

Access for contacts required

Access to contacts

Користувач має доступ тільки до своїх операцій з контактами

Create contact of logged user

Create contact

Login with user user1@example.com

Create contact

Get contacts of user user1@example.com only

Create contact

Login with user user2@example.com

Create contact

Get contacts of user user2@example.com only

Create contact

Bonus Static + Template WWW + JavaScript + CSS

HOME

LOGIN

JavaScript web client for auth and list

Get contacts of user user2@example.com only

LOGIN

Get contacts of user user1@example.com only

LOGIN

DOCKER

## DOCKER

https://hub.docker.com/r/lexxai/web_hw12