52 lines
1.8 KiB
Python
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")
|