feat: 内置演示账号 demo/demo1234 + 登录页一键填充 + 服务器地址修复
This commit is contained in:
@@ -29,10 +29,10 @@ export function LoginPage() {
|
|||||||
setError('');
|
setError('');
|
||||||
try {
|
try {
|
||||||
if (mode === 'login') {
|
if (mode === 'login') {
|
||||||
await serverLogin(username.trim(), password);
|
await serverLogin(username.trim(), password, serverUrl);
|
||||||
} else {
|
} else {
|
||||||
if (!invite.trim()) throw new Error('请填写邀请码');
|
if (!invite.trim()) throw new Error('请填写邀请码');
|
||||||
await serverRegister(username.trim(), password, invite.trim());
|
await serverRegister(username.trim(), password, invite.trim(), serverUrl);
|
||||||
}
|
}
|
||||||
setTimeout(() => window.location.reload(), 200);
|
setTimeout(() => window.location.reload(), 200);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -87,7 +87,13 @@ export function LoginPage() {
|
|||||||
<Button variant="primary" size="lg" onClick={() => void submit()} disabled={busy}>
|
<Button variant="primary" size="lg" onClick={() => void submit()} disabled={busy}>
|
||||||
{busy ? '请稍候…' : (mode === 'login' ? '进入我的档案' : '创建我的档案')}
|
{busy ? '请稍候…' : (mode === 'login' ? '进入我的档案' : '创建我的档案')}
|
||||||
</Button>
|
</Button>
|
||||||
<p className="text-center text-[11px] text-ink-3">数据按账号隔离存储 · 未注册用户请联系管理员获取邀请码</p>
|
<button
|
||||||
|
type="button"
|
||||||
|
className="mt-1 flex w-full items-center justify-center gap-1.5 rounded-md border border-dashed border-line px-3 py-2 text-[11.5px] text-ink-3 transition-colors hover:border-brand/40 hover:text-brand-text"
|
||||||
|
onClick={() => { setUsername('demo'); setPassword('demo1234'); }}
|
||||||
|
>
|
||||||
|
演示账号:demo / demo1234(点击填充)
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -208,6 +208,14 @@ function readJson(req) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getDb();
|
getDb();
|
||||||
|
|
||||||
|
// 种子演示账号(demo / demo1234,管理员权限),便于部署后立即可用
|
||||||
|
try {
|
||||||
|
const { register } = await import('./auth.mjs');
|
||||||
|
register({ username: 'demo', password: 'demo1234', device_name: 'seed' });
|
||||||
|
console.log('[footprints-sync] demo 账号已就绪 (demo / demo1234)');
|
||||||
|
} catch { /* 已存在则跳过 */ }
|
||||||
|
|
||||||
server.listen(PORT, '0.0.0.0', () => {
|
server.listen(PORT, '0.0.0.0', () => {
|
||||||
console.log('[footprints-sync] listening on 0.0.0.0:' + PORT);
|
console.log('[footprints-sync] listening on 0.0.0.0:' + PORT);
|
||||||
console.log('[footprints-sync] data dir:', process.env.DATA_DIR || path.join(__dirname, '..', 'data'));
|
console.log('[footprints-sync] data dir:', process.env.DATA_DIR || path.join(__dirname, '..', 'data'));
|
||||||
|
|||||||
Reference in New Issue
Block a user