增加为需要输入密码才能访问,同时支持远程PGSQL

This commit is contained in:
pigracing
2026-03-16 11:54:38 +08:00
parent f7957902e5
commit 3c955251f9
15 changed files with 1281 additions and 24 deletions

View File

@@ -58,6 +58,7 @@
<a href="/accounts" class="nav-link active">账号管理</a>
<a href="/email-services" class="nav-link">邮箱服务</a>
<a href="/settings" class="nav-link">设置</a>
<a href="/logout" class="nav-link">退出</a>
</div>
<button class="theme-toggle" onclick="theme.toggle()" title="切换主题">
🌙

View File

@@ -19,6 +19,7 @@
<a href="/accounts" class="nav-link">账号管理</a>
<a href="/email-services" class="nav-link active">邮箱服务</a>
<a href="/settings" class="nav-link">设置</a>
<a href="/logout" class="nav-link">退出</a>
</div>
<button class="theme-toggle" onclick="theme.toggle()" title="切换主题">
🌙

View File

@@ -107,6 +107,7 @@
<a href="/accounts" class="nav-link">账号管理</a>
<a href="/email-services" class="nav-link">邮箱服务</a>
<a href="/settings" class="nav-link">设置</a>
<a href="/logout" class="nav-link">退出</a>
</div>
<button class="theme-toggle" onclick="theme.toggle()" title="切换主题">
🌙

62
templates/login.html Normal file
View File

@@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>访问验证 - OpenAI 注册系统</title>
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🔒</text></svg>">
<style>
.login-wrap {
max-width: 420px;
margin: 12vh auto 0;
}
.login-card {
padding: var(--spacing-lg);
}
.login-title {
margin-bottom: var(--spacing-sm);
}
.login-subtitle {
color: var(--text-secondary);
margin-bottom: var(--spacing-lg);
}
.login-error {
background: var(--danger-light);
color: var(--danger-color);
border: 1px solid var(--danger-color);
padding: var(--spacing-sm) var(--spacing-md);
border-radius: var(--radius);
margin-bottom: var(--spacing-md);
font-size: 0.875rem;
}
</style>
</head>
<body>
<div class="container">
<div class="login-wrap">
<div class="card login-card">
<div class="card-header">
<h3 class="login-title">🔒 访问验证</h3>
<span class="hint">请输入访问密码继续</span>
</div>
<div class="card-body">
{% if error %}
<div class="login-error">{{ error }}</div>
{% endif %}
<form method="post" action="/login">
<input type="hidden" name="next" value="{{ next }}">
<div class="form-group">
<label for="password">访问密码</label>
<input type="password" id="password" name="password" autocomplete="current-password" required autofocus>
</div>
<div class="form-actions" style="margin-top: var(--spacing-lg);">
<button type="submit" class="btn btn-primary" style="width: 100%">验证进入</button>
</div>
</form>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -19,6 +19,7 @@
<a href="/accounts" class="nav-link">账号管理</a>
<a href="/email-services" class="nav-link">邮箱服务</a>
<a href="/settings" class="nav-link active">设置</a>
<a href="/logout" class="nav-link">退出</a>
</div>
<button class="theme-toggle" onclick="theme.toggle()" title="切换主题">
🌙
@@ -35,6 +36,7 @@
<!-- 设置标签页 -->
<div class="tabs">
<button class="tab-btn active" data-tab="proxy">🌐 代理设置</button>
<button class="tab-btn" data-tab="webui">🔒 访问控制</button>
<button class="tab-btn" data-tab="cpa">☁️ CPA上传</button>
<button class="tab-btn" data-tab="outlook">📮 Outlook配置</button>
<button class="tab-btn" data-tab="registration">⚙️ 注册配置</button>
@@ -181,6 +183,27 @@
</div>
</div>
<!-- 访问控制 -->
<div class="tab-content" id="webui-tab">
<div class="card">
<div class="card-header">
<h3>Web UI 访问密码</h3>
<span class="hint">用于访问页面的密码,留空表示不修改</span>
</div>
<div class="card-body">
<form id="webui-settings-form">
<div class="form-group">
<label for="webui-access-password">访问密码</label>
<input type="password" id="webui-access-password" name="access_password" placeholder="留空保持不变" autocomplete="new-password">
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">💾 保存设置</button>
</div>
</form>
</div>
</div>
</div>
<!-- 添加代理模态框 -->
<div class="modal" id="add-proxy-modal">
<div class="modal-content">