HRMNhân viên
Đăng nhập
Xác thực và đăng nhập vào hệ thống thông qua quy trình 2 bước.
Bước 1: Khởi tạo đăng nhập (authenticateInit)
Xác thực email/password và lấy danh sách các công ty mà người dùng tham gia.
Endpoint: POST /v1/users/authenticateinit
Body Parameters:
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
email | string | Có | Email người dùng |
password | string | Có | Mật khẩu |
source | string | Nguồn đăng nhập (mặc định: frontend) |
Response Schema:
{
"total": 2,
"limit": 20,
"currentpage": 1,
"items": [
{
"id": 101,
"user_id": 1,
"company": {
"id": 10311,
"name": "Công ty TNHH Phần Mềm Xanh",
"domain": "phanmemxanh",
"status": 1,
"date_created": 1609459200
},
"employee": {
"id": 101,
"user_id": 1,
"company_id": 10311,
"full_name": "Nguyễn Văn A",
"email": "[email protected]",
"phone": "0987654321",
"status": 1
}
},
{
"id": 205,
"user_id": 1,
"company": {
"id": 10500,
"name": "Chi nhánh Hà Nội",
"domain": "pmx-hanoi",
"status": 1,
"date_created": 1640995200
},
"employee": {
"id": 205,
"user_id": 1,
"company_id": 10500,
"full_name": "Nguyễn Văn A",
"email": "[email protected]",
"phone": "0987654321",
"status": 1
}
}
]
}Lưu ý:
- Nếu người dùng chỉ thuộc 1 công ty, có thể skip sang bước 2 tự động
- Email sẽ được chuyển về lowercase trước khi xử lý
Bước 2: Hoàn tất đăng nhập (authenticateFinish)
Xác thực và lấy JWT token cho công ty đã chọn.
Endpoint: POST /v1/users/authenticatefinish
Body Parameters:
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
email | string | Có | Email người dùng |
password | string | Có | Mật khẩu |
company_id | int | Có | ID công ty (từ bước 1) |
source | string | Nguồn đăng nhập (mặc định: frontend) |
Response Schema:
{
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "a1b2c3d4e5f6...",
"id": 1,
"email": "[email protected]",
"full_name": "Nguyễn Văn A",
"role": "admin,editor,inventory",
"company": {
"id": 10311,
"name": "Công ty TNHH Phần Mềm Xanh",
"domain": "phanmemxanh",
"status": 1,
"date_created": 1609459200
},
"employee": {
"id": 101,
"user_id": 1,
"company_id": 10311,
"full_name": "Nguyễn Văn A",
"email": "[email protected]",
"phone": "0987654321",
"status": 1
},
"company_list": [
{
"id": 101,
"user_id": 1,
"company": { "id": 10311, "name": "Công ty TNHH Phần Mềm Xanh", ... },
"employee": { ... }
}
]
}Response Fields:
| Field | Mô tả |
|---|---|
jwt | JWT token để sử dụng cho các request tiếp theo |
refresh_token | Refresh token để làm mới JWT khi hết hạn |
id | User ID |
email | Email người dùng |
full_name | Tên đầy đủ của nhân viên trong công ty |
role | Danh sách quyền (phân cách bằng dấu phẩy) |
company | Thông tin công ty đang đăng nhập |
employee | Thông tin nhân viên trong công ty |
company_list | Danh sách tất cả công ty người dùng tham gia |
Error Codes
| HTTP | Code | Mô tả |
|---|---|---|
| 401 | error_employee_not_found | Không tìm thấy thông tin nhân viên |
| 422 | error_email_required | Thiếu thông tin email |
| 422 | error_email_format_invalid | Định dạng email không hợp lệ |
| 422 | error_password_empty | Thiếu mật khẩu |
| 422 | error_account_not_found | Tài khoản không tồn tại |
| 422 | error_account_invalid | Mật khẩu không chính xác |
| 422 | error_company_id_not_found | Không tìm thấy ID công ty |
| 422 | error_employee_with_email_not_found | Email không thuộc nhân viên của công ty này |
| 500 | error_session_can_not_be_saved | Lỗi tạo phiên làm việc |
Sử dụng JWT Token
Sau khi đăng nhập thành công, sử dụng JWT token trong header của các request tiếp theo:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...