POST/api/auth/login
Đăng nhập người dùng và cấp một JWT phiên cũng như một Refresh-Token. Đây là cách duy nhất để có được token truy cập hợp lệ cho Dashboard — không có hệ thống khóa Developer-API riêng biệt.
Xác thực & bảo mật
Không cần xác thực
Chặn brute-force tăng dần theo email/tên đăng nhập (authGuard) -- 10 lần thử sai trong 5 phút sẽ làm tăng độ trễ, từ 30 lần trở lên sẽ khóa tài khoản.
Lũy đẳng (idempotent): Không
Tham số
identifier(body, string, bắt buộc)— Địa chỉ email hoặc tên đăng nhậppassword(body, string, bắt buộc)— Mật khẩuRequest mẫu
{"identifier":"user@example.com","password":"MatKhauCuaBan"}Response mẫu
{"ok":true,"token":"<JWT, hiệu lực 12h>","refreshToken":"<Refresh-Token, hiệu lực 7 ngày, chỉ dùng một lần>","user":{"id":"...","tenant_id":"...","email":"user@example.com","role":"EMPLOYEE","roles":[],"permissions":[],"isMasterAdmin":false}}Mã lỗi
401 INVALID_CREDENTIALS — Địa chỉ email/tên đăng nhập hoặc mật khẩu không chính xác.429 RATE_LIMIT_EXCEEDED — Quá nhiều lần thử thất bại cho định danh này hoặc địa chỉ IP.Bằng chứng kiểm thử trực tiếp
Thành công (200, JWT thật + Refresh-Token) và trường hợp lỗi (401 với mật khẩu sai) đã được xác minh trực tiếp trên bộ thử nghiệm bị cô lập.