WP-AUTH-HAT-SPLIT-01 — Khách ≠ tài xế
2026-08-17 · Domain D-AUTH · Surfaces CON · DRV · API
Mục tiêu
Cùng một người không dùng chức năng khách trên app tài xế và ngược lại.
Admin duyệt tài xế thường gắn USER + DRIVER trên cùng User. Trước WP này JWT đó vẫn book POST /rides và hydrate mobile/ MainTabs.
Đã làm
- Login —
assertSurfaceMatchesRoles:surface=CONSUMER+ roleDRIVER→ 403ACCOUNT_IS_DRIVER. Áp vàocompleteAuth(email/Google/password/Firebase) và phone OTPverifyOtp. - HTTP —
HatSplitInterceptor(sauJwtAuthGuard, không phảiAPP_GUARD):DRIVER: chỉauth·users·profile·wallet·upload·notifications·chat·reviews·driver·health·feature-flags·cms·support·GET /rides/:id/tracking. Cấm cart/orders/rides book/social…USER(khôngDRIVER): cấm/driver/*trừPOST register·PATCH kyc·GET application.ADMINbỏ qua.DRIVER+PARTNER_*vẫn ops/partnersvà*/partner.
- CON FE —
AuthContext: hydrate +applySessionnếurolescóDRIVER→ xóa token, không vào MainTabs.
USER vẫn login app Driver để đăng ký hồ sơ. Socket /rides · /chat không đi qua interceptor HTTP.
Verify
cd api && npx jest src/common/security/hat-split.spec.ts --runInBand