Files
CheckInApp/backend/config.py
T
8a12744 a9b141fc69 feat: implement JWT auth and optimize token validation
- Separate JWT login (21d) from check-in token
- Unify check-in token validation with verify_checkin_authorization()
- Update API docs for dual-token architecture
2026-01-05 23:02:50 +08:00

70 lines
1.9 KiB
Python

import os
from pathlib import Path
from pydantic_settings import BaseSettings, SettingsConfigDict
from typing import List
# 项目根目录
BASE_DIR = Path(__file__).resolve().parent.parent
class Settings(BaseSettings):
"""应用配置"""
model_config = SettingsConfigDict(
env_file=str(BASE_DIR / ".env"),
env_file_encoding='utf-8',
case_sensitive=True,
extra='ignore'
)
# 项目根目录
BASE_DIR: Path = BASE_DIR
# 项目基础配置
PROJECT_NAME: str = "CheckIn API"
VERSION: str = "2.0.0"
API_PREFIX: str = "/api"
# 安全配置(登录)
SECRET_KEY: str = "CheckInSecretKey"
# 数据库配置
DATABASE_URL: str = f"sqlite:///{BASE_DIR}/data/checkin.db"
# CORS 配置(从环境变量读取,用逗号分隔)
CORS_ORIGINS: str = "http://localhost:3000"
@property
def cors_origins_list(self) -> List[str]:
"""将CORS_ORIGINS字符串转换为列表"""
return [origin.strip() for origin in self.CORS_ORIGINS.split(",") if origin.strip()]
# 日志配置
LOG_FILE: Path = BASE_DIR / "logs" / "backend.log"
LOG_LEVEL: str = "INFO"
# 会话文件配置
SESSION_DIR: Path = BASE_DIR / "sessions"
SESSION_CLEANUP_HOURS: int = 24
# 邮件配置(从 .env 读取)
SMTP_SERVER: str = ""
SMTP_PORT: int = 465
SMTP_SENDER_EMAIL: str = ""
SMTP_SENDER_PASSWORD: str = ""
SMTP_USE_SSL: bool = True
# 前端 URL 配置(用于邮件中的链接)
FRONTEND_URL: str = "http://localhost:3000"
# 定时任务配置(可通过环境变量配置)
TOKEN_CHECK_INTERVAL_MINUTES: int = 30 # Token 检查间隔(分钟)
SESSION_CLEANUP_INTERVAL_HOURS: int = 24 # 会话清理间隔(小时)
# Selenium / Chrome 配置(从 .env 读取)
CHROME_BINARY_PATH: str = ""
CHROMEDRIVER_PATH: str = ""
settings = Settings()