UI a menu a FA

This commit is contained in:
JiriUhlir
2026-06-15 09:57:24 +02:00
parent 40069c8969
commit 3bb762d08a
8 changed files with 117 additions and 38 deletions
+21 -16
View File
@@ -253,7 +253,7 @@ def render_health_dot(status: str | None, checked_at: str | None) -> str:
@router.get("/")
def portal_home(user=Depends(require_user)):
return RedirectResponse(url="/portal/operations", status_code=303)
return RedirectResponse(url="/portal/apps", status_code=303)
@router.get("/apps", response_class=HTMLResponse)
@@ -373,21 +373,26 @@ def apps_page(
</div>
</details>
</td>
<td class="actions-cell service-actions">
<a class="btn" href="/portal/apps/{app_url_id}">Detail</a>
<a class="btn btn-secondary" href="/portal/deployments?app_id={app_url_id}">Nasazení</a>
<details class="action-menu">
<summary aria-label="Další akce">...</summary>
<div class="action-menu-panel">
<form method="post" action="/portal/apps/{app_url_id}/redeploy" onsubmit="return confirm('Spustit nové nasazení služby {app_id}?');">
<button type="submit" class="menu-action">Nasadit znovu</button>
</form>
<form method="post" action="/portal/delete-app" onsubmit="return confirm('Smazat {app_id}? Tím se odstraní kontejner, image, workspace, záznam v katalogu a Gitea repozitář.');">
<input type="hidden" name="app_id" value="{app_id}">
<button type="submit" class="menu-action menu-action-danger">Smazat</button>
</form>
</div>
</details>
<td class="action-icons-cell">
<div class="action-icons">
<a class="icon-action" href="/portal/apps/{app_url_id}" title="Detail služby" aria-label="Detail služby">
<i class="fa-solid fa-circle-info" aria-hidden="true"></i>
</a>
<a class="icon-action" href="/portal/deployments?app_id={app_url_id}" title="Nasazení" aria-label="Nasazení">
<i class="fa-solid fa-rocket" aria-hidden="true"></i>
</a>
<form method="post" action="/portal/apps/{app_url_id}/redeploy" onsubmit="return confirm('Spustit nové nasazení služby {app_id}?');">
<button type="submit" class="icon-action" title="Nasadit znovu" aria-label="Nasadit znovu">
<i class="fa-solid fa-arrows-rotate" aria-hidden="true"></i>
</button>
</form>
<form method="post" action="/portal/delete-app" onsubmit="return confirm('Smazat {app_id}? Tím se odstraní kontejner, image, workspace, záznam v katalogu a Gitea repozitář.');">
<input type="hidden" name="app_id" value="{app_id}">
<button type="submit" class="icon-action icon-action-danger" title="Smazat" aria-label="Smazat">
<i class="fa-solid fa-trash" aria-hidden="true"></i>
</button>
</form>
</div>
</td>
</tr>
"""
+4 -4
View File
@@ -33,7 +33,7 @@ GOOGLE_USERINFO_URL = "https://openidconnect.googleapis.com/v1/userinfo"
@router.get("/login", response_class=HTMLResponse)
def login_form(request: Request):
if current_user(request):
return RedirectResponse(url="/portal/operations", status_code=303)
return RedirectResponse(url="/portal/apps", status_code=303)
return _render_login()
@@ -58,13 +58,13 @@ def login(request: Request, username: str = Form(...), password: str = Form(...)
metadata={"username": user.get("username")},
)
return RedirectResponse(url="/portal/operations", status_code=303)
return RedirectResponse(url="/portal/apps", status_code=303)
@router.get("/auth/gitea/login")
def gitea_login(request: Request):
if current_user(request):
return RedirectResponse(url="/portal/operations", status_code=303)
return RedirectResponse(url="/portal/apps", status_code=303)
return _render_login("Gitea login is disabled. Use Google sign in.")
gitea_url = get_gitea_public_url()
@@ -148,7 +148,7 @@ def gitea_callback(request: Request, code: str = "", state: str = "", error: str
@router.get("/auth/google/login")
def google_login(request: Request):
if current_user(request):
return RedirectResponse(url="/portal/operations", status_code=303)
return RedirectResponse(url="/portal/apps", status_code=303)
if get_auth_mode() == "local":
return _render_login("Google login is not enabled in local auth mode.")