From 0a26c8b07a1069b28bd5193f782540e76f7ba766 Mon Sep 17 00:00:00 2001 From: Du Wenbo Date: Thu, 2 Apr 2026 21:14:42 +0800 Subject: [PATCH] feat: add guest login button for customer demos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - One-click "访客体验入口" button on login page - Visitor account (visitor/visitor123) with read-only role - No username/password needed for customers to browse Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/pages/Login/index.tsx | 39 +++++++++++++++++++++++++----- scripts/seed_data.py | 3 +++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/frontend/src/pages/Login/index.tsx b/frontend/src/pages/Login/index.tsx index 2bdc263..e204cf9 100644 --- a/frontend/src/pages/Login/index.tsx +++ b/frontend/src/pages/Login/index.tsx @@ -9,14 +9,20 @@ const { Title, Text } = Typography; export default function LoginPage() { const [loading, setLoading] = useState(false); + const [guestLoading, setGuestLoading] = useState(false); const navigate = useNavigate(); + const doLogin = async (username: string, password: string) => { + const res: any = await login(username, password); + setToken(res.access_token); + setUser(res.user); + return res; + }; + const onFinish = async (values: { username: string; password: string }) => { setLoading(true); try { - const res: any = await login(values.username, values.password); - setToken(res.access_token); - setUser(res.user); + await doLogin(values.username, values.password); message.success('登录成功'); navigate('/'); } catch { @@ -26,6 +32,19 @@ export default function LoginPage() { } }; + const onGuestLogin = async () => { + setGuestLoading(true); + try { + await doLogin('visitor', 'visitor123'); + message.success('访客登录成功'); + navigate('/'); + } catch { + message.error('访客登录失败,请联系管理员'); + } finally { + setGuestLoading(false); + } + }; + return (
- {import.meta.env.DEV && - 默认账号: admin / admin123 - } + + + +
+ + 访客仅可浏览数据,无管理权限 + +
diff --git a/scripts/seed_data.py b/scripts/seed_data.py index f165355..3fbe1bc 100644 --- a/scripts/seed_data.py +++ b/scripts/seed_data.py @@ -108,6 +108,9 @@ async def seed(): User(username="operator1", hashed_password=hash_password("tianpu123"), full_name="李运维", role="operator", email="op1@tianpu.com", phone="13800000003"), + User(username="visitor", hashed_password=hash_password("visitor123"), + full_name="访客", role="visitor", email=None, + phone=None), ] session.add_all(users)