https://github.com/lexxai/goit_python_web_hw_13
GoIT, Python WEB, Homework number 13. FastAPI. PostgreSQL. Docker. REST API. ORM SQLAlchemy. Pydantic. Bootstraps CSS. Jinga. Alembic. OAuth2. JWT. Redis. Cloudinary. Limits
https://github.com/lexxai/goit_python_web_hw_13
cloduinary docker docker-compose fastapi fastapi-sqlalchemy goit homwork jinja2 oauth2 postgresql pydantic python redis rest-api
Last synced: 6 days ago
JSON representation
GoIT, Python WEB, Homework number 13. FastAPI. PostgreSQL. Docker. REST API. ORM SQLAlchemy. Pydantic. Bootstraps CSS. Jinga. Alembic. OAuth2. JWT. Redis. Cloudinary. Limits
- Host: GitHub
- URL: https://github.com/lexxai/goit_python_web_hw_13
- Owner: lexxai
- License: mit
- Created: 2023-11-20T02:20:54.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-22T00:10:26.000Z (over 1 year ago)
- Last Synced: 2025-03-18T01:44:52.877Z (3 months ago)
- Topics: cloduinary, docker, docker-compose, fastapi, fastapi-sqlalchemy, goit, homwork, jinja2, oauth2, postgresql, pydantic, python, redis, rest-api
- Language: Python
- Homepage:
- Size: 4.09 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](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
```


#### Docker Hub url: https://hub.docker.com/r/lexxai/web_hw13
### Режим 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




