2.2 KiB
2.2 KiB
登录/支付/VIP 权限检查报告
检查范围:digital、cnomadcna、nomadvip、payjsapi
一、登录流程
| 项目 | /api/auth/me | /api/auth/sync-session | /api/auth/logout | credentials |
|---|---|---|---|---|
| digital | ✅ 读 pb_session,refresh 回写 | ✅ 设置 Cookie | ✅ 清除 Cookie | ✅ include |
| cnomadcna | ✅ | ✅ | ✅ | ✅ AuthModal/JoinModal |
| nomadvip | ✅ | ✅ | ✅ | ✅ AuthForm |
Cookie domain:
- digital:已用
getAuthCookieDomain(request),localhost 不设 domain - cnomadcna:已改为
getAuthCookieDomain,localhost 兼容 - nomadvip:已改为
getAuthCookieDomain,localhost 兼容
二、支付流程
| 项目 | 前端入口 | Next.js API | payjsapi 路径 | site_id |
|---|---|---|---|---|
| digital | join 页 / Roadmap | /api/pay | /digital/payh5 | digital |
| cnomadcna | HeroSection JoinModal | /api/pay | /cnomadcna/payh5 | meetup |
| nomadvip | 支付页 | 直接调 payjsapi | /nomadvip/payh5 | vip |
payjsapi 回调:
- digital/cnomadcna:
_digital_base,xorpay_notify / zpay_notify →handle_payment_success→ site_vip - nomadvip:xorpay_notify / zpay_notify →
handle_payment_success→ site_vip - meetup 类型:effective_site_id 固定为 "meetup"
- vip 类型:effective_site_id 为 "vip"
三、VIP 权限
| 项目 | SITE_ID | VIP 校验逻辑 |
|---|---|---|
| digital | digital | site_id=digital 或 site_id=vip |
| cnomadcna | meetup | site_id=meetup |
| nomadvip | vip | site_id=vip |
site_vip 表: user_id + site_id + order_id + expires_at
四、环境变量
| 变量 | 说明 |
|---|---|
| AUTH_COOKIE_DOMAIN | 生产环境根域,如 .hackrobot.cn |
| POCKETBASE_EMAIL / POCKETBASE_PASSWORD | VIP 查询用 admin |
| PAYMENT_API_URL | payjsapi 地址,如 https://api.hackrobot.cn |
| NEXT_PUBLIC_POCKETBASE_URL | PocketBase 地址 |
| NEXT_PUBLIC_SITE_ID | digital / meetup / vip |
五、本次修复
- cnomadcna:auth/me、sync-session、logout 改用
getAuthCookieDomain,支持 localhost - nomadvip:同上,新增
app/lib/auth-cookie-domain.ts