Working prototype

This commit is contained in:
2025-05-13 14:19:37 +02:00
parent 2678372ced
commit d1adfe9f93
12 changed files with 491 additions and 0 deletions

38
main.py Normal file
View File

@@ -0,0 +1,38 @@
from fastapi import FastAPI, Request, Depends, Form, HTTPException
from fastapi.responses import RedirectResponse, HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from starlette.middleware.sessions import SessionMiddleware
from db.models import Base, engine, SessionLocal, get_db, User
from auth.session import get_current_user, login_user, logout_user
from auth import webauthn, oidc
import uvicorn
app = FastAPI()
app.add_middleware(SessionMiddleware, secret_key="my_secret_key")
app.include_router(webauthn.router)
app.include_router(oidc.router)
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
# DB
Base.metadata.create_all(bind=engine)
@app.get("/", response_class=HTMLResponse)
def home(request: Request, user: User = Depends(get_current_user)):
if not user:
return RedirectResponse(url="/login", status_code=303)
return templates.TemplateResponse("index.html", {"request": request, "user": user})
@app.get("/login", response_class=HTMLResponse)
def login_form(request: Request):
return templates.TemplateResponse("login.html", {"request": request})
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)