账户系统完善,使用uuid+多identity记录
This commit is contained in:
@@ -36,6 +36,32 @@
|
||||
- 有 JWT 时使用 SpacetimeDB 自带 `sender_auth().jwt()` 建档,`login_provider` 标记为 `jwt`
|
||||
- 用户主键按 `user_<identity_hex>` 生成,避免再依赖原先 Node 自签 access token / refresh token 流程
|
||||
|
||||
### 2.2 内部账户模型状态
|
||||
|
||||
当前 STDB 私有实现已经开始显式转向账户语义:
|
||||
|
||||
- 私有 Rust struct 已经切到 `Account / AccountIdentity / AccountSession`
|
||||
- `auth.rs / runtime.rs / lib.rs` 内部 helper 和生命周期接线也开始改用 `account` 语义命名
|
||||
- 公开 view / procedure 名称暂时保持不变,但当前 schema 字段已经切到 `account_id / owner_account_id`
|
||||
- 前端 TypeScript bindings 已经重新生成并同步适配了 `account_id` 语义
|
||||
|
||||
### 2.1 当前统一账户策略
|
||||
|
||||
当前已经开始按“统一账户,多设备会话”方向调整:
|
||||
|
||||
- 新建账户时,账户主键已经不再直接使用连接 identity,而是生成独立 `acct_*` 账户 id
|
||||
- 当前设备在短信验证时,如果手机号已命中已有用户,不再直接报“手机号已绑定其他账号”
|
||||
- 当前连接的 identity / session 会被归并到这个已有手机号用户
|
||||
- 当前游客账户下的快照、设置、自定义世界、游玩统计、浏览历史等运行时数据也会一起迁移到目标账户
|
||||
- 这样同一个手机号可以在多个设备上同时建立会话,并归到同一个用户主体下
|
||||
|
||||
当前限制:
|
||||
|
||||
- 归并的是“当前连接身份”和“当前会话”
|
||||
- 当前的账户数据迁移是规则式合并,不是全量业务语义级合并
|
||||
- 例如看板/游玩统计用了保守合并策略,自定义世界同名冲突按更新时间取新
|
||||
- 也就是说,统一账户主语义已经开始生效,但后续仍值得补一轮更细的并档策略
|
||||
|
||||
### 3. 短信验证门禁
|
||||
|
||||
当前行为已经按你的要求落地:
|
||||
@@ -62,7 +88,7 @@
|
||||
- `client_app_config`
|
||||
- `my_auth_state`
|
||||
- `my_auth_audit_logs`
|
||||
- `my_user_sessions`
|
||||
- `my_account_sessions`
|
||||
- `my_auth_risk_blocks`
|
||||
- `my_snapshot`
|
||||
- `my_runtime_settings`
|
||||
@@ -85,7 +111,7 @@
|
||||
|
||||
为了承接客户端账户弹窗,本轮补了:
|
||||
|
||||
- `my_user_sessions`
|
||||
- `my_account_sessions`
|
||||
- 用于读取当前账号关联的会话列表
|
||||
- `my_auth_risk_blocks`
|
||||
- 用于读取当前账号手机号/IP 对应的保护记录
|
||||
@@ -153,7 +179,7 @@ spacetime sql genarrative-local "$(tr '\n' ' ' < scripts/spacetime/init_local_ap
|
||||
- `src/services/storageService.ts`
|
||||
- 已从 `/api/runtime/*` 的存档/设置/资料库接口切到 Spacetime。
|
||||
- `src/services/authService.ts`
|
||||
- 现在也会读取 `my_user_sessions` / `my_auth_risk_blocks`,并调用 `lift_my_risk_block`。
|
||||
- 现在也会读取 `my_account_sessions` / `my_auth_risk_blocks`,并调用 `lift_my_risk_block`。
|
||||
- `src/components/auth/AuthGate.tsx`
|
||||
- 已改成默认游客建连,并监听 `verification_prompt_event` / `kick_event`。
|
||||
- `src/components/auth/PhoneVerificationModal.tsx`
|
||||
|
||||
Reference in New Issue
Block a user