Di động: đăng nhập và quản lý token
2FA, hạn 180 ngày, gia hạn, đăng xuất
POST /api/mobile/auth/login
Content-Type: application/json
{"login":"nhanvien@example.com","password":"<mat_khau>",
"totpCode":"123456","device":"iPhone của An"}
totpCode chỉ cần khi tài khoản bật xác thực hai yếu tố. Phản hồi thành công chứa data.token, data.expiresAt, hồ sơ người dùng, công ty và features. Lưu token trong vùng bảo mật của thiết bị. Token có hạn 180 ngày; app nên gia hạn khi gần hết hạn.
| Route | Ý nghĩa |
|---|---|
GET /app-config | Không cần token; đọc phiên bản app tối thiểu và liên kết store. |
GET /me | Đọc người dùng, nhân viên, công ty và tính năng. |
POST /auth/renew | Cấp token mới, thu hồi token cũ ngay. Thay token lưu trên máy bằng kết quả mới. |
POST /auth/logout | Thu hồi token hiện tại và xoá thiết bị gắn với token. |
POST /me/password | Body có oldPassword, newPassword; mật khẩu mới ít nhất 8 ký tự. |
Nếu nhận totp_required, hiển thị ô nhập mã rồi gọi đăng nhập lại. invalid_credentials và totp_invalid là lỗi xác thực. Tài khoản cổng khách hàng trả not_internal.