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
|
||||
export DB_HOST=localhost
|
||||
export DEX_ISSUER=https://dex.127.0.0.1.sslip.io/
|
||||
|
||||
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
|
||||
|
||||
|
||||
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_PORT = os.getenv("DB_PORT", "5432")
|
||||
DB_PORT = os.getenv("DB_PORT", "5440")
|
||||
DB_NAME = os.getenv("DB_NAME", "dexdemo")
|
||||
DB_USER = os.getenv("DB_USER", "dexdemo")
|
||||
DB_PASSWORD = os.getenv("DB_PASSWORD", "dexdemo")
|
||||
DEX_ISSUER = os.getenv("DEX_ISSUER", "https://dex.127.0.0.1.sslip.io/")
|
||||
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):
|
||||
id: int
|
||||
@ -125,6 +129,11 @@ def validate_jwt_token(token: str) -> dict:
|
||||
|
||||
def get_user_email(request: Request) -> str:
|
||||
"""Извлечение email пользователя из JWT или заголовков"""
|
||||
# В режиме разработки возвращаем заданный email
|
||||
if INSECURE_DEV_MODE:
|
||||
print(f"INSECURE_DEV_MODE: Using email {INSECURE_DEV_EMAIL}")
|
||||
return INSECURE_DEV_EMAIL
|
||||
|
||||
# Попытка получить токен из заголовка Authorization
|
||||
auth_header = request.headers.get("Authorization")
|
||||
|
||||
|
||||
@ -2,16 +2,16 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
postgres:
|
||||
python-navigator-demo-postgres:
|
||||
image: postgres:15-alpine
|
||||
environment:
|
||||
POSTGRES_DB: dexdemo
|
||||
POSTGRES_USER: dexdemo
|
||||
POSTGRES_PASSWORD: dexdemo
|
||||
ports:
|
||||
- "5432:5432"
|
||||
- "5440:5432"
|
||||
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
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U dexdemo"]
|
||||
@ -19,7 +19,7 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
backend:
|
||||
python-navigator-demo-backend:
|
||||
build: ./backend
|
||||
ports:
|
||||
- "8000:8000"
|
||||
@ -30,19 +30,18 @@ services:
|
||||
DB_USER: dexdemo
|
||||
DB_PASSWORD: dexdemo
|
||||
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:
|
||||
postgres:
|
||||
python-navigator-demo-postgres:
|
||||
condition: service_healthy
|
||||
restart: unless-stopped
|
||||
|
||||
frontend:
|
||||
python-navigator-demo-frontend:
|
||||
build: ./frontend
|
||||
ports:
|
||||
- "8080:80"
|
||||
depends_on:
|
||||
- backend
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
python-navigator-demo-postgres_data:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user