import { THEME_CSS, escapeHtml, tabNavHTML } from "../render/layout"; import type { UserRow } from "../store"; export function buildMePage(user: UserRow, flash: { kind: "ok" | "err"; msg: string } | null): string { const flashHtml = flash ? `
${escapeHtml(flash.msg)}
` : ""; const adminBadge = user.is_admin ? ` admin` : ""; const lastUpdated = user.updated_at ? `资料更新于 ${escapeHtml(user.updated_at)}` : ""; return ` ${escapeHtml(user.login)} · 我的
👤 我的账户
${tabNavHTML("projects", { login: user.login, is_admin: user.is_admin })}

${escapeHtml(user.login)}${adminBadge}${user.is_active ? "" : ' 未激活'}

${lastUpdated} ${flashHtml}

修改密码

${user.password_hash ? `` : `
当前账户没有设置密码(通过共享 token 登录)。下面设置一个新密码后即可使用用户名+密码登录。
`}

账户信息

登录名:${escapeHtml(user.login)}
类型:${escapeHtml(user.kind)}
${user.email ? `
邮箱:${escapeHtml(user.email)}
` : ""} ${user.display_name ? `
显示名:${escapeHtml(user.display_name)}
` : ""}
PAT (Personal Access Token) 用于 agent / CLI 认证,前往管理 →
`; } interface AdminFlash { kind: "ok" | "err"; msg: string; } export function buildAdminUsersPage(viewer: UserRow, users: UserRow[], flash: AdminFlash | null): string { const flashHtml = flash ? `
${escapeHtml(flash.msg)}
` : ""; const rows = users .map((u) => { const adminBadge = u.is_admin ? `admin` : ""; const inactiveBadge = u.is_active ? "" : `禁用`; const pwState = u.password_hash ? `已设密码` : `无密码(token 登录)`; const kindBadge = u.kind === "bot" ? `bot` : u.kind === "system" ? `system` : ""; const toggleAdminLabel = u.is_admin ? "取消 admin" : "设为 admin"; const toggleActiveLabel = u.is_active ? "禁用账户" : "启用账户"; const isSelf = u.login === viewer.login; const selfNote = isSelf ? `(你)` : ""; return ` ${escapeHtml(u.login)} ${selfNote} ${kindBadge} ${adminBadge} ${inactiveBadge} ${pwState} ${escapeHtml(u.created_at.slice(0, 10))}
`; }) .join(""); return ` 用户管理 · ework
👥 用户管理
${tabNavHTML("projects", { login: viewer.login, is_admin: viewer.is_admin })}

用户

${flashHtml}
用户 所有 Token Webhook 投递

新建用户

已有用户(${users.length})

${rows}
用户认证注册操作
`; }