add dev mode
This commit is contained in:
13
README.md
13
README.md
@ -236,8 +236,21 @@ source venv/bin/activate
|
|||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
export DB_HOST=localhost
|
export DB_HOST=localhost
|
||||||
export DEX_ISSUER=https://dex.127.0.0.1.sslip.io/
|
export DEX_ISSUER=https://dex.127.0.0.1.sslip.io/
|
||||||
|
|
||||||
python main.py
|
python main.py
|
||||||
```
|
```
|
||||||
|
Для удобной локальной разработки без настройки OIDC/Dex есть режим разработки.
|
||||||
|
```bash
|
||||||
|
export INSECURE_DEV_MODE=true
|
||||||
|
export INSECURE_DEV_EMAIL=developer@example.com
|
||||||
|
```
|
||||||
|
#### Что происходит в режиме разработки
|
||||||
|
|
||||||
|
- **Отключается проверка JWT токенов** - не требуется настройка Dex или OIDC
|
||||||
|
- **Используется фиксированный email** - задается через переменную `INSECURE_DEV_EMAIL`
|
||||||
|
- **Логирование** - в консоли будет выводиться сообщение о том, какой email используется
|
||||||
|
|
||||||
|
**Никогда не используйте INSECURE_DEV_MODE=true в продакшене!** Это отключает всю аутентификацию.
|
||||||
|
|
||||||
### Локальная разработка frontend
|
### Локальная разработка frontend
|
||||||
|
|
||||||
|
|||||||
BIN
README.pdf
BIN
README.pdf
Binary file not shown.
@ -21,13 +21,17 @@ app.add_middleware(
|
|||||||
|
|
||||||
# Конфигурация из переменных окружения
|
# Конфигурация из переменных окружения
|
||||||
DB_HOST = os.getenv("DB_HOST", "postgres")
|
DB_HOST = os.getenv("DB_HOST", "postgres")
|
||||||
DB_PORT = os.getenv("DB_PORT", "5432")
|
DB_PORT = os.getenv("DB_PORT", "5440")
|
||||||
DB_NAME = os.getenv("DB_NAME", "dexdemo")
|
DB_NAME = os.getenv("DB_NAME", "dexdemo")
|
||||||
DB_USER = os.getenv("DB_USER", "dexdemo")
|
DB_USER = os.getenv("DB_USER", "dexdemo")
|
||||||
DB_PASSWORD = os.getenv("DB_PASSWORD", "dexdemo")
|
DB_PASSWORD = os.getenv("DB_PASSWORD", "dexdemo")
|
||||||
DEX_ISSUER = os.getenv("DEX_ISSUER", "https://dex.127.0.0.1.sslip.io/")
|
DEX_ISSUER = os.getenv("DEX_ISSUER", "https://dex.127.0.0.1.sslip.io/")
|
||||||
DEX_JWKS_URL = f"{DEX_ISSUER}keys"
|
DEX_JWKS_URL = f"{DEX_ISSUER}keys"
|
||||||
|
|
||||||
|
# Режим разработки
|
||||||
|
INSECURE_DEV_MODE = os.getenv("INSECURE_DEV_MODE", "false").lower() == "true"
|
||||||
|
if INSECURE_DEV_MODE:
|
||||||
|
INSECURE_DEV_EMAIL = os.getenv("INSECURE_DEV_EMAIL")
|
||||||
|
|
||||||
class Organization(BaseModel):
|
class Organization(BaseModel):
|
||||||
id: int
|
id: int
|
||||||
@ -125,6 +129,11 @@ def validate_jwt_token(token: str) -> dict:
|
|||||||
|
|
||||||
def get_user_email(request: Request) -> str:
|
def get_user_email(request: Request) -> str:
|
||||||
"""Извлечение email пользователя из JWT или заголовков"""
|
"""Извлечение email пользователя из JWT или заголовков"""
|
||||||
|
# В режиме разработки возвращаем заданный email
|
||||||
|
if INSECURE_DEV_MODE:
|
||||||
|
print(f"INSECURE_DEV_MODE: Using email {INSECURE_DEV_EMAIL}")
|
||||||
|
return INSECURE_DEV_EMAIL
|
||||||
|
|
||||||
# Попытка получить токен из заголовка Authorization
|
# Попытка получить токен из заголовка Authorization
|
||||||
auth_header = request.headers.get("Authorization")
|
auth_header = request.headers.get("Authorization")
|
||||||
|
|
||||||
|
|||||||
@ -2,16 +2,16 @@
|
|||||||
version: '3.8'
|
version: '3.8'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
python-navigator-demo-postgres:
|
||||||
image: postgres:15-alpine
|
image: postgres:15-alpine
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: dexdemo
|
POSTGRES_DB: dexdemo
|
||||||
POSTGRES_USER: dexdemo
|
POSTGRES_USER: dexdemo
|
||||||
POSTGRES_PASSWORD: dexdemo
|
POSTGRES_PASSWORD: dexdemo
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "5440:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- python-navigator-demo-postgres_data:/var/lib/postgresql/data
|
||||||
- ./db/init.sql:/docker-entrypoint-initdb.d/init.sql
|
- ./db/init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U dexdemo"]
|
test: ["CMD-SHELL", "pg_isready -U dexdemo"]
|
||||||
@ -19,7 +19,7 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
backend:
|
python-navigator-demo-backend:
|
||||||
build: ./backend
|
build: ./backend
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
@ -30,19 +30,18 @@ services:
|
|||||||
DB_USER: dexdemo
|
DB_USER: dexdemo
|
||||||
DB_PASSWORD: dexdemo
|
DB_PASSWORD: dexdemo
|
||||||
DEX_ISSUER: https://dex.127.0.0.1.sslip.io
|
DEX_ISSUER: https://dex.127.0.0.1.sslip.io
|
||||||
|
# Режим разработки - установите INSECURE_DEV_MODE=true для локальной разработки без OIDC
|
||||||
|
INSECURE_DEV_MODE: "true"
|
||||||
|
INSECURE_DEV_EMAIL: "developer@example.com"
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
python-navigator-demo-postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
frontend:
|
python-navigator-demo-frontend:
|
||||||
build: ./frontend
|
build: ./frontend
|
||||||
ports:
|
ports:
|
||||||
- "8080:80"
|
- "8080:80"
|
||||||
depends_on:
|
|
||||||
- backend
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
postgres_data:
|
python-navigator-demo-postgres_data:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user