Files
gitlab-instance-0a899031_no…/docs/AUTH_VIP_CHECK_REPORT.md
2026-03-13 03:43:50 -05:00

3.5 KiB
Raw Blame History

登录态共享与 VIP 解锁逻辑检查报告

检查范围digital、cnomadcna、nomadvip、payjsapi 后端


一、登录态共享SSO

项目 Cookie 名 域名 配置来源
nomadvip pb_session AUTH_COOKIE_DOMAIN || .hackrobot.cn 硬编码
digital pb_session AUTH_COOKIE_DOMAIN (domain.config) .${ROOT_DOMAIN}
cnomadcna pb_session AUTH_COOKIE_DOMAIN (domain.config) .${ROOT_DOMAIN}

结论:三项目 Cookie 配置一致,默认均为 .hackrobot.cn

1.2 Auth API 实现

项目 /api/auth/sync-session /api/auth/me /api/auth/logout
nomadvip
digital
cnomadcna

1.3 已修复项

  • digital/cnomadcna AuthModalsync-session 请求添加 credentials: "include"
  • digital Header / cnomadcna Navbar/api/auth/me 添加 credentials: "include"
  • nomadvip:此前已添加 credentials

二、VIP 解锁逻辑

2.1 site_id 与 VIP 校验

项目 SITE_ID VIP 校验逻辑
nomadvip vip site_vip.site_id = "vip"
digital digital可配置 site_id = SITE_ID site_id = "vip"VIP 站可解锁所有 digital
cnomadcna meetup site_vip.site_id = "meetup"(仅本站)

2.2 支付接口 site_id 传递

项目 接口路径 site_id 传递 状态
digital /digital/payh5 site_id: SITE_ID 正常
cnomadcna /cnomadcna/payh5 site_id: "meetup" 正常
nomadvip /nomadvip/payh5 site_id: "vip"(已修复) 已修复

nomadvip 修复createPayOrder 及 redirect 请求中补充 site_id: "vip",确保 payjsapi 支付回调能正确写入 site_vip。


三、payjsapi 后端要求

payjsapi 不在本仓库,需在 api.hackrobot.cn 侧确认:

3.1 订单创建接口

  • nomadvipPOST /nomadvip/payh5 需接收 site_id: "vip"
  • digitalPOST /digital/payh5 需接收 site_id
  • cnomadcnaPOST /cnomadcna/payh5 需接收 site_id: "meetup"

3.2 支付成功回调

支付成功后payjsapi 需:

  1. 从订单中读取 user_idsite_id
  2. 写入 PocketBase paymentsuser_id、type、order_id 等)
  3. 写入 PocketBase site_vipuser_id、site_id、order_id、expires_at
  4. 创建 Memos 账号qun.hackrobot.cn账号名=user_id密码 12345678

详见 docs/PAYJSAPI_NOMADVIP_SPEC.md

3.3 PocketBase site_vip 表

  • user_idPocketBase 用户 ID
  • site_iddigital | meetup | vip
  • order_id支付订单号
  • expires_at到期时间null 表示永久

四、cnomadcna 与 VIP 站关系

当前 cnomadcnameetup支持 VIP 站解锁,仅校验 site_id = "meetup"

若需「VIP 站付费可解锁 meetup」需在 cnomadcna 的 vip/check 中增加对 site_id = "vip" 的校验,与 digital 保持一致。


五、检查清单

  • nomadvip 支付传递 site_id
  • digital/cnomadcna sync-session 使用 credentials
  • digital/cnomadcna auth/me 使用 credentials
  • payjsapi 确认 nomadvip 订单接收并处理 site_id
  • payjsapi 确认支付回调写入 site_vip
  • payjsapi 确认支付回调写入 payments 表
  • payjsapi 确认支付回调创建 Memos 账号user_id 格式,密码 12345678