42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
# main.py
|
|
from fastapi import FastAPI, Request, Depends
|
|
from fastapi.responses import HTMLResponse
|
|
from fastapi.templating import Jinja2Templates
|
|
from fastapi.staticfiles import StaticFiles
|
|
from db.models import User
|
|
|
|
from api.dependencies import get_current_user_optional
|
|
from api.routers import users, invoices
|
|
from db.database import engine, Base
|
|
|
|
Base.metadata.create_all(bind=engine)
|
|
|
|
app = FastAPI(title="ACME Invoice Processor")
|
|
|
|
app.mount("/static", StaticFiles(directory="static"), name="static")
|
|
templates = Jinja2Templates(directory="templates")
|
|
|
|
app.include_router(users.router, prefix="/api/users", tags=["Users"])
|
|
app.include_router(invoices.router, prefix="/api/invoices", tags=["Invoices"])
|
|
|
|
# --- RUTAS DE PLANTILLAS HTML ---
|
|
|
|
@app.get("/", response_class=HTMLResponse)
|
|
async def read_login_page(request: Request):
|
|
"""
|
|
Esta ruta ahora SOLO sirve la página de login.
|
|
"""
|
|
return templates.TemplateResponse("login.html", {"request": request})
|
|
|
|
@app.get("/dashboard", response_class=HTMLResponse)
|
|
async def read_dashboard(request: Request):
|
|
"""
|
|
Esta es la nueva ruta dedicada para el dashboard.
|
|
La seguridad se manejará en el propio HTML con JavaScript.
|
|
"""
|
|
return templates.TemplateResponse("dashboard.html", {"request": request})
|
|
|
|
@app.get("/register", response_class=HTMLResponse)
|
|
async def register_page(request: Request):
|
|
return templates.TemplateResponse("register.html", {"request": request})
|