Skip to content

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

License

Notifications You must be signed in to change notification settings

lexxai/goit_python_web_hw_13

Repository files navigation

goit_python_web_hw_13

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

Домашнє завдання №13

Перша частина

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

Завдання

1.1. Реалізуйте механізм верифікації електронної пошти зареєстрованого користувача;

1.2. Обмежуйте кількість запитів до своїх маршрутів контактів. Обов’язково обмежте швидкість - створення контактів для користувача;

1.3. Увімкніть CORS для свого REST API;

1.4. Реалізуйте можливість оновлення аватара користувача. Використовуйте сервіс Cloudinary;

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

  • Усі змінні середовища повинні зберігатися у файлі .env. Всередині коду не повинно бути конфіденційних даних у «чистому» вигляді;
  • Для запуску всіх сервісів і баз даних у застосунку використовується Docker Compose;

Додаткове завдання

1.5. Реалізуйте механізм кешування за допомогою бази даних Redis. Виконайте кешування поточного користувача під час авторизації;

1.6. Реалізуйте механізм скидання пароля для застосунку REST API;

Друга частина

У цьому домашньому завданні необхідно доопрацювати застосунок Django із домашнього завдання 10.

Завдання

2.1. Реалізуйте механізм скидання пароля для зареєстрованого користувача;

2.2. Усі змінні середовища повинні зберігатися у файлі .env та використовуватися у файлі settings.py

Результати виконання завдань

Встановлення та запуск

Підготувати зміні оточення .env

На основі прикладів у теці doc\dot-env-example створити файли з Вашими індивідуальними даними:

  • .env (визначає APP_ENV що визначає поточний робочий файл є prod, dev)
  • .env-dev (Налаштування для dev)
  • .env-prod (Налаштування для prod)

Режим Docker prod

Docker app compose

Виконати скрипт:

cd .\scripts
docker_run_docker-compose.cmd

або

docker-compose --env-file .env-prod up -d 

Режим dev

Бази даних Docker compose

Виконати скрипт:

cd .\scripts
docker_run_db_compose.cmd

або

docker compose  --env-file .env-prod --file docker-compose-db.yml  up -d 
cd .\hw13
alembic upgrade head 

FastAPI server

Виконати скрипт:

cd .\scripts
runserver.cmd

або

cd .\hw13
uvicorn main:app --reload --port 9000

або

cd .\hw13
python .\main.py

Відкрити сторінку браузера http://localhost:9000

FastAPI - Swagger UI JavaScript easy client

Етапи виконання

1.1. Реалізуйте механізм верифікації електронної пошти зареєстрованого користувача

Реєстрація

Спроба зайти, без підтвердження пошти

Лист підтвердження

Підтвердження за клац на посилання з листа

Зміна у базі даних

Спроба зайти, після підтвердження пошти

1.2.

Обмежуйте кількість запитів до своїх маршрутів контактів.

Postman

Обмеження швидкісті - створення контактів для користувача

Postman

seed script

1.3. CORS

CORS ORIGIN ALLOW http://localhost:3001

CORS ORIGIN DENY FOR http://localhost:3002

CORS ORIGIN DENY FOR http://localhost:3002

CORS ORIGIN ALLOW http://localhost:3002

CORS ORIGIN ALLOWED FOR http://localhost:3002

1.4. Avatar Cloudinary

Default Gravatar link

Upload new avatar to Cloudinary

Download link of avatar from Cloudinary

Updated link of avatar from Cloudinary on user profile

1.5. Механізм кешування за допомогою бази даних Redis. Кешування поточного користувача під час авторизації.

2. Django із домашнього завдання 10

Проєкт виконано за цим посиланням:

https://github.com/lexxai/goit_python_web_hw_10/tree/addon-hw13

(prepend) Django - https://github.com/lexxai/goit_python_web_django_lect_02_notes/tree/reset_password

2.1 Django HW10

PASSWORD RESET

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published