WELIFE Docs Swagger Admin Web

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

  1. Login — assertSurfaceMatchesRoles: surface=CONSUMER + role DRIVER → 403 ACCOUNT_IS_DRIVER. Áp vào completeAuth (email/Google/password/Firebase) và phone OTP verifyOtp.
  2. HTTP — HatSplitInterceptor (sau JwtAuthGuard, không phải APP_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ông DRIVER): cấm /driver/* trừ POST register · PATCH kyc · GET application.
    • ADMIN bỏ qua. DRIVER + PARTNER_* vẫn ops /partners và */partner.
  3. CON FE — AuthContext: hydrate + applySession nếu roles có 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