feat: rebuild xiteng.site homelab platform
This commit is contained in:
+144
@@ -0,0 +1,144 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="color-scheme" content="light">
|
||||
<meta name="theme-color" content="#f0c94b">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<title>Portal 管理 / xiteng.site</title>
|
||||
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
|
||||
<link rel="icon" href="/icons/favicon-32.png" sizes="32x32" type="image/png">
|
||||
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png">
|
||||
<link rel="manifest" href="/manifest.webmanifest">
|
||||
<link rel="stylesheet" href="/styles.css">
|
||||
<script src="/admin.js" defer></script>
|
||||
</head>
|
||||
<body class="admin-page">
|
||||
<header class="topbar">
|
||||
<nav class="shell nav" aria-label="管理导航">
|
||||
<a class="brand" href="/">liooil / xiteng.site</a>
|
||||
<div class="nav-links">
|
||||
<a href="#identity">身份</a>
|
||||
<a href="#vault">Key Vault</a>
|
||||
<a href="#components">组件</a>
|
||||
<a href="/account">我的凭据</a>
|
||||
<a href="/">公开主页</a>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="shell admin-main">
|
||||
<section class="admin-heading">
|
||||
<p class="eyebrow">ADMIN CONTROL PLANE</p>
|
||||
<h1>身份、凭据与组件</h1>
|
||||
<p>
|
||||
Authentik 是唯一身份系统。只有用户名严格等于 <code>liooil</code> 的会话可以访问本页;
|
||||
Key Vault 独立负责 Backend Credential,管理页不会保存或回显密钥明文。
|
||||
</p>
|
||||
<p id="admin-session" class="admin-session" aria-live="polite">正在验证管理员会话…</p>
|
||||
</section>
|
||||
|
||||
<section class="admin-summary" aria-label="管理摘要">
|
||||
<div><strong id="admin-users">—</strong><span>家庭用户</span></div>
|
||||
<div><strong id="admin-credentials">—</strong><span>Vault 凭据</span></div>
|
||||
<div><strong id="admin-total">—</strong><span>动态组件</span></div>
|
||||
<div><strong id="admin-down">—</strong><span>不可用组件</span></div>
|
||||
</section>
|
||||
|
||||
<section id="identity" class="admin-panel">
|
||||
<div class="admin-panel-heading">
|
||||
<div>
|
||||
<p class="section-kicker">AUTHENTIK / IDENTITY</p>
|
||||
<h2>用户与访问策略</h2>
|
||||
</div>
|
||||
<button id="identity-refresh" class="admin-action" type="button">刷新</button>
|
||||
</div>
|
||||
<div id="identity-status" class="admin-notice" aria-live="polite">正在连接 Authentik…</div>
|
||||
|
||||
<form id="identity-search-form" class="admin-form admin-form-inline compact">
|
||||
<label>搜索<input name="search" maxlength="150" placeholder="用户名、显示名或邮箱"></label>
|
||||
<button class="admin-action" type="submit">搜索</button>
|
||||
</form>
|
||||
|
||||
<div class="admin-form-grid">
|
||||
<form id="user-create-form" class="admin-form">
|
||||
<h3>新建普通用户</h3>
|
||||
<label>用户名<input name="username" required maxlength="150" autocomplete="off"></label>
|
||||
<label>显示名<input name="name" required maxlength="160" autocomplete="off"></label>
|
||||
<label>邮箱<input name="email" type="email" maxlength="254" autocomplete="off"></label>
|
||||
<button class="admin-action" type="submit">创建并加入 liuhome</button>
|
||||
</form>
|
||||
<form id="group-create-form" class="admin-form">
|
||||
<h3>新建用户组</h3>
|
||||
<label>名称<input name="name" required maxlength="160" autocomplete="off"></label>
|
||||
<button class="admin-action" type="submit">创建用户组</button>
|
||||
<p><code>liuhome</code> 是家庭基础组,不能重命名或删除。</p>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="admin-subsection">
|
||||
<h3>用户</h3>
|
||||
<div id="identity-users" class="admin-list"><div class="loading-card">正在读取用户…</div></div>
|
||||
</div>
|
||||
<div class="admin-subsection">
|
||||
<h3>用户组</h3>
|
||||
<div id="identity-groups" class="admin-list"><div class="loading-card">正在读取用户组…</div></div>
|
||||
</div>
|
||||
<div class="admin-subsection">
|
||||
<h3>非开放服务权限矩阵</h3>
|
||||
<p class="admin-help">每个服务只允许所选用户组;当前统一使用 <code>liuhome</code>。</p>
|
||||
<div id="identity-applications" class="admin-list"><div class="loading-card">正在读取应用…</div></div>
|
||||
</div>
|
||||
<div class="admin-subsection">
|
||||
<h3>身份操作审计</h3>
|
||||
<div id="identity-audit" class="admin-audit"></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="vault" class="admin-panel">
|
||||
<div class="admin-panel-heading">
|
||||
<div>
|
||||
<p class="section-kicker">KEY VAULT</p>
|
||||
<h2>Backend Provider 凭据</h2>
|
||||
</div>
|
||||
<button id="vault-refresh" class="admin-action" type="button">刷新</button>
|
||||
</div>
|
||||
<div class="admin-notice">
|
||||
管理员只能管理 Backend Credential;Frontend Credential 始终保留在用户浏览器中。
|
||||
</div>
|
||||
|
||||
<form id="credential-create-form" class="admin-form admin-form-inline">
|
||||
<label>所有者<input value="当前 Authentik 管理员会话" disabled></label>
|
||||
<label>Provider<select name="providerId" id="admin-credential-provider" required></select></label>
|
||||
<label>名称<input name="name" required maxlength="120" value="default"></label>
|
||||
<label>API Key<input name="apiKey" type="password" required maxlength="32768" autocomplete="new-password"></label>
|
||||
<button class="admin-action" type="submit">加密保存</button>
|
||||
</form>
|
||||
|
||||
<div id="vault-credentials" class="admin-list">
|
||||
<div class="loading-card">正在读取凭据元数据…</div>
|
||||
</div>
|
||||
|
||||
<div class="admin-subsection">
|
||||
<h3>审计</h3>
|
||||
<div id="vault-audit" class="admin-audit"></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="components" class="admin-panel">
|
||||
<div class="admin-panel-heading">
|
||||
<div>
|
||||
<p class="section-kicker">REGISTRY / MONITORING</p>
|
||||
<h2>组件生命周期</h2>
|
||||
</div>
|
||||
<button id="admin-refresh" class="admin-action" type="button">刷新</button>
|
||||
</div>
|
||||
<p id="admin-updated" class="admin-help" aria-live="polite">正在读取 Registry…</p>
|
||||
<div id="admin-components" class="admin-components" aria-live="polite">
|
||||
<div class="loading-card">正在读取组件生命周期…</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user