Zdocs.zca.vnVề ZCA

Đăng nhập

Hệ thống hỗ trợ hai cách đăng nhập: email + mật khẩuZalo OA (OAuth). Sau khi đăng nhập thành công, bạn nhận JWT token dùng cho mọi request API (trừ login, register).

1. Đăng nhập bằng email

Gửi POST tới /auth/login với body JSON:

POST https://api.zca.vn/api/auth/login
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "your_password",
  "remember_me": true
}

Response thành công chứa tokenuser. Lưu token và gửi kèm header Authorization: Bearer <token> cho các request sau.

2. Đăng nhập bằng Zalo OA (OAuth)

User/Agency có thể đăng nhập bằng tài khoản Zalo OA (Official Account). Luồng:

  1. Ứng dụng (zca.vn hoặc app.zca.vn) chuyển hướng user tới URL Zalo OAuth: https://oauth.zaloapp.com/v4/oa/permission?app_id=...&redirect_uri=...&state=...
  2. User đồng ý cấp quyền trên Zalo.
  3. Zalo redirect về api.zca.vn: GET /api/auth/zalo/callback?code=...&state=...
  4. Backend đổi code lấy access_token Zalo, tạo hoặc cập nhật user, tạo JWT và redirect về frontend (app.zca.vn) với query zalo=success&token=...&next=....

Redirect URI mặc định: https://api.zca.vn/api/auth/zalo/callback. URL này phải được khai báo trong Zalo Developer Console (Cài đặt → Redirect URI).

3. Xác thực API (Bearer token)

Mọi endpoint (trừ /auth/login, /auth/register, /auth/zalo/callback) yêu cầu header:

Authorization: Bearer <your_jwt_token>

Nếu token thiếu hoặc hết hạn, API trả về 401 với thông báo "Token không hợp lệ hoặc hết hạn". Khi đó cần đăng nhập lại để lấy token mới.

4. Lấy thông tin user hiện tại

Gửi GET /auth/me với header Authorization để lấy thông tin user (id, email, role, referral_code, parent_id).