GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。 NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは 別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
function escapeHtml(value) {
|
|
return String(value)
|
|
.replace(/&/g, '&')
|
|
.replace(/</g, '<')
|
|
.replace(/>/g, '>')
|
|
.replace(/"/g, '"');
|
|
}
|
|
|
|
function renderLoginPage(errorMessage) {
|
|
const errorHtml = errorMessage ? `<p class="error">${escapeHtml(errorMessage)}</p>` : '';
|
|
return `<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>App Portal Admin Login</title>
|
|
</head>
|
|
<body>
|
|
<h1>Admin Login</h1>
|
|
${errorHtml}
|
|
<form method="POST" action="/admin/login">
|
|
<input type="password" name="masterKey" placeholder="Master Key" required>
|
|
<button type="submit">Login</button>
|
|
</form>
|
|
</body>
|
|
</html>`;
|
|
}
|
|
|
|
function renderAdminPage(emails, errorMessage) {
|
|
const errorHtml = errorMessage ? `<p class="error">${escapeHtml(errorMessage)}</p>` : '';
|
|
const rows = emails
|
|
.map(
|
|
(email) => `<li>
|
|
${escapeHtml(email)}
|
|
<form method="POST" action="/admin/allowlist/remove" style="display:inline">
|
|
<input type="hidden" name="email" value="${escapeHtml(email)}">
|
|
<button type="submit">削除</button>
|
|
</form>
|
|
</li>`
|
|
)
|
|
.join('\n');
|
|
return `<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Allowlist Admin</title>
|
|
</head>
|
|
<body>
|
|
<h1>Allowlist Admin</h1>
|
|
${errorHtml}
|
|
<ul>${rows}</ul>
|
|
<form method="POST" action="/admin/allowlist/add">
|
|
<input type="email" name="email" placeholder="user@example.com" required>
|
|
<button type="submit">追加</button>
|
|
</form>
|
|
<form method="POST" action="/admin/logout">
|
|
<button type="submit">ログアウト</button>
|
|
</form>
|
|
</body>
|
|
</html>`;
|
|
}
|
|
|
|
module.exports = { renderLoginPage, renderAdminPage };
|