feat: 查询页增强 + 权限体系优化

- Redis DB0~DB15 下拉选择,默认DB0
- 查询历史粘贴按钮(一键填入SQL编辑器)
- 去掉导出历史按钮
- SchemaSidebar 按目标数据库筛选
- SQL自动补全 schema 双层注册(db→tables, table→columns)
- 后端 db-schema 接口(INFORMATION_SCHEMA.COLUMNS 一次加载)
- autocompletion 扩展激活
- Redis key 树形结构(冒号分隔层级)
- Redis 查询模板 GET/HGETALL/HGET
- guest 角色彻底移除,改为 auditor
- 登录页优化:去掉演示账号、placeholder 中文提示
This commit is contained in:
logan committed 2026-05-24 18:50:08 +08:00
1 parent aa2e26c827
commit 35a014e571
13 files changed
+345 -111

No files matched your search

+3 -15
View File
@@ -92,12 +92,12 @@ export default function LoginPage() {
<form onSubmit={handleLogin} className="space-y-4">
<div>
<label className="block text-sm font-medium mb-2">用户名 / 邮箱</label>
<label className="block text-sm font-medium mb-2">用户名</label>
<div className="relative">
<UserCog className="absolute left-3.5 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--dg-text-muted)]" />
<input
className="w-full pl-10 pr-4 py-3 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-lg text-sm focus:border-blue-400 focus:outline-none focus:ring-1 focus:ring-blue-400/20 transition-all"
placeholder="admin"
placeholder="请输入用户名"
value={username}
onChange={e => setUsername(e.target.value)}
/>
@@ -110,7 +110,7 @@ export default function LoginPage() {
<input
type="password"
className="w-full pl-10 pr-4 py-3 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-lg text-sm focus:border-blue-400 focus:outline-none focus:ring-1 focus:ring-blue-400/20 transition-all"
placeholder="123456"
placeholder="请输入密码"
value={password}
onChange={e => setPassword(e.target.value)}
/>
@@ -127,18 +127,6 @@ export default function LoginPage() {
</button>
{error && <p className="text-xs text-red-400 text-center mt-2">{error}</p>}
</form>
<div className="mt-6 p-3 rounded-lg bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)]">
<p className="text-xs text-[var(--dg-text-muted)] text-center">演示账号</p>
<div className="flex gap-2 mt-2">
<button onClick={() => { setUsername('admin'); setPassword('123456'); }} className="flex-1 py-2 text-xs rounded-md bg-blue-500/10 text-blue-400 border border-blue-500/20 hover:bg-blue-500/20 transition-colors">
管理员
</button>
<button onClick={() => { setUsername('developer'); setPassword('123456'); }} className="flex-1 py-2 text-xs rounded-md bg-green-500/10 text-green-400 border border-green-500/20 hover:bg-green-500/20 transition-colors">
开发者
</button>
</div>
</div>
</div>
</div>
</div>