2025-05-16 06:23:48 +00:00
|
|
|
"""Настройки приложения"""
|
|
|
|
|
|
|
|
import os
|
2024-01-25 19:41:27 +00:00
|
|
|
from os import environ
|
2025-05-20 22:34:02 +00:00
|
|
|
from pathlib import Path
|
2025-06-01 23:56:11 +00:00
|
|
|
from typing import Literal
|
2025-05-20 22:34:02 +00:00
|
|
|
|
|
|
|
# Корневая директория проекта
|
|
|
|
ROOT_DIR = Path(__file__).parent.absolute()
|
2024-01-25 19:41:27 +00:00
|
|
|
|
2025-03-20 09:24:30 +00:00
|
|
|
DEV_SERVER_PID_FILE_NAME = "dev-server.pid"
|
|
|
|
|
|
|
|
PORT = environ.get("PORT") or 8000
|
|
|
|
|
|
|
|
# storages
|
2022-09-03 10:50:14 +00:00
|
|
|
DB_URL = (
|
2024-04-17 15:32:23 +00:00
|
|
|
environ.get("DATABASE_URL", "").replace("postgres://", "postgresql://")
|
|
|
|
or environ.get("DB_URL", "").replace("postgres://", "postgresql://")
|
2025-02-09 19:26:50 +00:00
|
|
|
or "sqlite:///discoursio.db"
|
2022-09-03 10:50:14 +00:00
|
|
|
)
|
2024-04-17 15:32:23 +00:00
|
|
|
REDIS_URL = environ.get("REDIS_URL") or "redis://127.0.0.1"
|
2025-03-20 09:24:30 +00:00
|
|
|
|
|
|
|
# debug
|
2024-04-17 15:32:23 +00:00
|
|
|
GLITCHTIP_DSN = environ.get("GLITCHTIP_DSN")
|
2023-12-25 01:45:21 +00:00
|
|
|
|
2025-05-16 06:23:48 +00:00
|
|
|
# auth
|
2024-04-17 15:32:23 +00:00
|
|
|
ADMIN_SECRET = environ.get("AUTH_SECRET") or "nothing"
|
2025-05-16 06:23:48 +00:00
|
|
|
ADMIN_EMAILS = environ.get("ADMIN_EMAILS") or "services@discours.io,guests@discours.io,welcome@discours.io"
|
2025-02-09 19:26:50 +00:00
|
|
|
|
|
|
|
# own auth
|
2025-05-16 06:23:48 +00:00
|
|
|
ONETIME_TOKEN_LIFE_SPAN = 60 * 15 # 15 минут
|
|
|
|
SESSION_TOKEN_LIFE_SPAN = 60 * 60 * 24 * 30 # 30 дней
|
|
|
|
SESSION_TOKEN_HEADER = "Authorization"
|
2025-02-09 19:26:50 +00:00
|
|
|
JWT_ALGORITHM = "HS256"
|
2025-02-11 09:00:35 +00:00
|
|
|
JWT_SECRET_KEY = environ.get("JWT_SECRET") or "nothing-else-jwt-secret-matters"
|
2025-05-16 06:23:48 +00:00
|
|
|
|
|
|
|
# URL фронтенда
|
|
|
|
FRONTEND_URL = os.getenv("FRONTEND_URL", "http://localhost:3000")
|
|
|
|
|
|
|
|
# Настройки OAuth провайдеров
|
|
|
|
OAUTH_CLIENTS = {
|
|
|
|
"GOOGLE": {
|
|
|
|
"id": os.getenv("GOOGLE_CLIENT_ID", ""),
|
|
|
|
"key": os.getenv("GOOGLE_CLIENT_SECRET", ""),
|
|
|
|
},
|
|
|
|
"GITHUB": {
|
|
|
|
"id": os.getenv("GITHUB_CLIENT_ID", ""),
|
|
|
|
"key": os.getenv("GITHUB_CLIENT_SECRET", ""),
|
|
|
|
},
|
|
|
|
"FACEBOOK": {
|
|
|
|
"id": os.getenv("FACEBOOK_CLIENT_ID", ""),
|
|
|
|
"key": os.getenv("FACEBOOK_CLIENT_SECRET", ""),
|
|
|
|
},
|
2025-06-30 19:43:32 +00:00
|
|
|
"X": {
|
|
|
|
"id": os.getenv("X_CLIENT_ID", ""),
|
|
|
|
"key": os.getenv("X_CLIENT_SECRET", ""),
|
|
|
|
},
|
|
|
|
"YANDEX": {
|
|
|
|
"id": os.getenv("YANDEX_CLIENT_ID", ""),
|
|
|
|
"key": os.getenv("YANDEX_CLIENT_SECRET", ""),
|
|
|
|
},
|
|
|
|
"VK": {
|
|
|
|
"id": os.getenv("VK_CLIENT_ID", ""),
|
|
|
|
"key": os.getenv("VK_CLIENT_SECRET", ""),
|
|
|
|
},
|
|
|
|
"TELEGRAM": {
|
|
|
|
"id": os.getenv("TELEGRAM_CLIENT_ID", ""),
|
|
|
|
"key": os.getenv("TELEGRAM_CLIENT_SECRET", ""),
|
|
|
|
},
|
2025-05-16 06:23:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# Настройки базы данных
|
|
|
|
DATABASE_URL = os.getenv("DATABASE_URL", "postgresql://postgres:postgres@localhost:5432/discours")
|
|
|
|
|
|
|
|
# Настройки JWT
|
|
|
|
JWT_SECRET = os.getenv("JWT_SECRET", "your-secret-key")
|
|
|
|
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 30
|
|
|
|
JWT_REFRESH_TOKEN_EXPIRE_DAYS = 30
|
|
|
|
|
2025-05-30 11:05:50 +00:00
|
|
|
# Настройки для HTTP cookies (используется в auth middleware)
|
2025-06-30 19:43:32 +00:00
|
|
|
SESSION_COOKIE_NAME = "session_token"
|
2025-06-28 10:56:05 +00:00
|
|
|
SESSION_COOKIE_SECURE = True # Включаем для HTTPS
|
2025-05-16 06:23:48 +00:00
|
|
|
SESSION_COOKIE_HTTPONLY = True
|
2025-06-01 23:56:11 +00:00
|
|
|
SESSION_COOKIE_SAMESITE: Literal["lax", "strict", "none"] = "lax"
|
2025-05-30 11:05:50 +00:00
|
|
|
SESSION_COOKIE_MAX_AGE = 30 * 24 * 60 * 60 # 30 дней
|
2025-05-16 06:23:48 +00:00
|
|
|
|
|
|
|
MAILGUN_API_KEY = os.getenv("MAILGUN_API_KEY", "")
|
|
|
|
MAILGUN_DOMAIN = os.getenv("MAILGUN_DOMAIN", "discours.io")
|
2025-05-22 01:34:30 +00:00
|
|
|
|
|
|
|
|
2025-05-29 09:37:39 +00:00
|
|
|
TXTAI_SERVICE_URL = os.environ.get("TXTAI_SERVICE_URL", "none")
|