Phase 1 (Foundation): - Project restructure (presenton-main → backend/ + frontend/) - Database schema (8 new models, Alembic config, seed script) - Auth (Azure AD SSO + dev bypass, JWT sessions, AuthMiddleware) - RBAC (access_service, rbac_middleware, admin routers) - Audit logging (fire-and-forget, AuditMiddleware, admin router) - i18n (react-i18next with 5 namespace files) Phase 2 (Admin Panel & Client Management): - Admin panel shell (sidebar layout, role guard, 12 pages) - Redux admin slice with 18 async thunks - User management (role changes, deactivation) - Client management (CRUD, brand config, team management) - Brand config editor (colors, fonts, logos, voice rules) - Master deck upload & parser (PPTX → HTML → React pipeline) - Audit log viewer with filters and CSV/JSON export Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
from fastapi import APIRouter, FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from api.lifespan import app_lifespan
|
|
from api.middlewares import UserConfigEnvUpdateMiddleware
|
|
from api.middlewares.auth_middleware import AuthMiddleware
|
|
from api.v1.ppt.router import API_V1_PPT_ROUTER
|
|
from api.v1.webhook.router import API_V1_WEBHOOK_ROUTER
|
|
from api.v1.mock.router import API_V1_MOCK_ROUTER
|
|
from api.v1.auth.router import AUTH_ROUTER
|
|
from api.v1.admin.users_router import USERS_ROUTER
|
|
from api.v1.admin.teams_router import TEAMS_ROUTER
|
|
from api.v1.admin.clients_router import CLIENTS_ROUTER
|
|
from api.v1.admin.audit_router import AUDIT_ROUTER
|
|
from api.v1.admin.brand_config_router import BRAND_CONFIG_ROUTER
|
|
from api.v1.admin.master_decks_router import MASTER_DECKS_ROUTER
|
|
from api.middlewares.audit_middleware import AuditMiddleware
|
|
|
|
|
|
app = FastAPI(lifespan=app_lifespan)
|
|
|
|
# Admin router aggregator
|
|
ADMIN_ROUTER = APIRouter(prefix="/api/v1/admin")
|
|
ADMIN_ROUTER.include_router(USERS_ROUTER)
|
|
ADMIN_ROUTER.include_router(TEAMS_ROUTER)
|
|
ADMIN_ROUTER.include_router(CLIENTS_ROUTER)
|
|
ADMIN_ROUTER.include_router(AUDIT_ROUTER)
|
|
ADMIN_ROUTER.include_router(BRAND_CONFIG_ROUTER)
|
|
ADMIN_ROUTER.include_router(MASTER_DECKS_ROUTER)
|
|
|
|
# Routers
|
|
app.include_router(AUTH_ROUTER)
|
|
app.include_router(ADMIN_ROUTER)
|
|
app.include_router(API_V1_PPT_ROUTER)
|
|
app.include_router(API_V1_WEBHOOK_ROUTER)
|
|
app.include_router(API_V1_MOCK_ROUTER)
|
|
|
|
# Middlewares (executed in reverse order: last added = first executed)
|
|
# 1. CORS must run first (handles preflight OPTIONS)
|
|
origins = ["*"]
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=origins,
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
# 2. Auth middleware (validates JWT, attaches user to request.state)
|
|
app.add_middleware(AuthMiddleware)
|
|
|
|
# 3. Audit middleware (fire-and-forget logging for mutations)
|
|
app.add_middleware(AuditMiddleware)
|
|
|
|
# 4. User config middleware
|
|
app.add_middleware(UserConfigEnvUpdateMiddleware)
|