Frontend 设计
NextAuth Providers
| id | 用途 |
|---|---|
player-code | 玩家登录码 |
staff-credentials | Admin/Display 密码 |
google | OAuth(保留) |
azure-ad | OAuth(保留) |
resolveRoles(): player:*@game.local → 非 admin/display
页面流
/ → /login (玩家) 或 /staff-login (工作人员)
登录成功 → middleware 按角色 → /play | /admin | /show
player-id.ts
STORAGE_KEY = 'bucssa_lottery_player_id'
getOrCreatePlayerId() → crypto.randomUUID()
主题 (theme.ts + globals.css)
<html data-theme="spring|mario">
CSS 变量与 .theme-* 工具类随主题切换背景、面板、字体。
AdminHeader
新增 props: loginCodeStatus, onPublishLoginCode, onCloseLoginCode
Show 页面
- state:
loginCodeActive,loginCode - listeners:
login_code_published|status|closed LoginCodeDisplay与GameContent条件渲染
类型守卫
isWinnerPayload, isTiePayload 支持 optional display 字段。
开发
npm run dev
改 auth.ts 白名单或 Staff 密码 env 后需重启。