Add scheme dropdown and load defaults from config

This commit is contained in:
Koha9
2025-06-21 19:34:07 +09:00
parent 7ab55e3ae4
commit d4ed9d22f5
4 changed files with 68 additions and 7 deletions
+37 -4
View File
@@ -1,5 +1,5 @@
import os
from app.utils.config import load_config, save_config
from app.utils.config import load_config, save_config, get_server_settings
from fastapi import FastAPI, Request, Form
from fastapi.responses import HTMLResponse, RedirectResponse
from fastapi.templating import Jinja2Templates
@@ -18,27 +18,54 @@ app.mount("/static", StaticFiles(directory=os.path.join(os.path.dirname(__file__
async def home(request: Request):
config = load_config()
theme = config.get("theme", "auto")
return templates.TemplateResponse("login.html", {"request": request, "theme": theme, "path": "/login"})
scheme, host, port = get_server_settings(config)
return templates.TemplateResponse(
"login.html",
{
"request": request,
"theme": theme,
"path": "/login",
"scheme": scheme,
"server_url": host,
"port": port,
},
)
@app.get("/login", response_class=HTMLResponse)
async def login_page(request: Request):
config = load_config()
theme = config.get("theme", "auto")
return templates.TemplateResponse("login.html", {"request": request, "theme": theme, "path": "/login"})
scheme, host, port = get_server_settings(config)
return templates.TemplateResponse(
"login.html",
{
"request": request,
"theme": theme,
"path": "/login",
"scheme": scheme,
"server_url": host,
"port": port,
},
)
@app.post("/login", response_class=HTMLResponse)
async def login(
request: Request,
user: str = Form(...),
pw: str = Form(...),
scheme: str = Form("https"),
url: str = Form(...),
port: str = Form("32400")
):
config = load_config()
theme = config.get("theme", "auto")
try:
connect_plex(config, user, pw, url, port)
full_url = url
if not full_url.startswith("http://") and not full_url.startswith("https://"):
full_url = f"{scheme}://{url}"
connect_plex(config, user, pw, full_url, port)
save_config(config)
scheme, host, port = get_server_settings(config)
return templates.TemplateResponse(
"login.html",
{
@@ -47,6 +74,9 @@ async def login(
"success": True,
"theme": theme,
"path": "/login",
"scheme": scheme,
"server_url": host,
"port": port,
},
)
except Exception as e:
@@ -58,6 +88,9 @@ async def login(
"success": False,
"theme": theme,
"path": "/login",
"scheme": scheme,
"server_url": url,
"port": port,
},
)