Files

52 lines
1.8 KiB
Python

import uvicorn
from fastapi import (
Cookie,
Depends,
FastAPI,
Form,
Request,
responses,
staticfiles,
templating,
)
from functions.admin import is_logged_in
from functions.admin.models import database
from functions.admin.templates import log, logins, logs, refresh
def Site():
app = FastAPI()
templates = templating.Jinja2Templates(directory="static/templates")
app.mount("/static", staticfiles.StaticFiles(directory="static"), name="static")
@app.get("/", response_class=responses.HTMLResponse)
def login(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
@app.get("/login", response_class=responses.HTMLResponse)
def login(request: Request):
return templates.TemplateResponse("login.html", {"request": request})
@app.post("/logins")
async def logins_response(username: str = Form(...), password: str = Form(...),
db=Depends(database.get_db)):
return await logins.logins(username, password, db)
@app.get("/refresh")
async def refresh_access_token(req: Request, refresh_token: str = Cookie(None),
db=Depends(database.get_db)):
return await refresh.refresh_access_token(req, refresh_token, db)
@app.get("/logs", response_class=responses.HTMLResponse)
async def logs_response(request: Request,
logged_in: bool = Depends(is_logged_in.is_logged_in)):
return await logs.logs(templates, request, logged_in)
@app.get("/logs/{log_id}", response_class=responses.HTMLResponse)
async def log_response(request: Request, log_id: int,
logged_in: bool = Depends(is_logged_in.is_logged_in)):
return await log.log(templates, request, log_id, logged_in)
uvicorn.run(app, host="0.0.0.0")