# 登录/支付/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 | ## 五、本次修复 1. **cnomadcna**:auth/me、sync-session、logout 改用 `getAuthCookieDomain`,支持 localhost 2. **nomadvip**:同上,新增 `app/lib/auth-cookie-domain.ts`