38 lines
1.7 KiB
Python
Executable File
38 lines
1.7 KiB
Python
Executable File
from fastapi import FastAPI, Request, Form, Depends, Cookie, responses, templating, staticfiles
|
|
from functions.admin import is_logged_in
|
|
from functions.admin.models import database
|
|
from functions.admin.templates import logins, refresh, logs, log
|
|
import uvicorn
|
|
|
|
|
|
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)
|