Triển khai và Kế hoạch (PLAN) - User Management
1. Đánh giá rủi ro kỹ thuật (Technical Risks)
Tính năng quản lý người dùng là "cửa ngõ" bảo mật của toàn hệ thống. Cần đặc biệt lưu ý các rủi ro sau:
| Rủi ro (Risk) | Khả năng | Mức độ | Giải pháp phòng ngừa (Mitigation) |
|---|---|---|---|
| #R1: Tấn công dò mật khẩu (Brute-force/Dictionary Attack) | Medium | High | Giới hạn số lần đăng nhập sai. Sau 5 lần thất bại, cập nhật field locked_until trong DB để khóa tài khoản 15 phút. Khuyến nghị cấu hình Rate Limit chặn IP Request dồn dập ở tầng Nginx. |
| #R2: Đánh cắp Token JWT (XSS/Token Theft) | Medium | High | Token Access có thời hạn ngắn (15 - 60 phút). Refresh Token có thời hạn dài (1 ngày - 7 ngày) nhưng nên xem xét cấu hình lưu tại tầng Frontend qua HttpOnly Cookies nếu môi trường web thuần. Nếu là app thiết bị xưởng, giữ trong Secure Storage. |
| #R3: Quyền quản trị bị leo thang (Privilege Escalation) | Low | Critical | Kiểm tra chéo ở Backend API (Decorators / Permission Classes trong DRF). Frontend chỉ làm nhiệm vụ ẩn/hiện nút, BE luôn phải xác nhận Code Permission trước khi thao tác DB. Tuyệt đối không để API thiếu kiểm tra quyền. |
2. Kế hoạch triển khai (Phases Breakdown)
Tổng thời gian dự kiến: 2 Tuần (Sprint 1).
Phase 1: Authentication Core (Tuần 1)
- Thiết kế DB: Tạo model Custom User (kế thừa
AbstractBaseUsercủa Django), cấu hình PostgreSQL. - Cấu hình Security: Tích hợp bộ băm mật khẩu
Argon2. - JWT Setup: Tích hợp
djangorestframework-simplejwt. - API Xây dựng: Cài đặt 3 API cốt lõi: Login (Token TokenObtainPair), Refresh Token, và User Info (lấy thông tin profile bản thân).
- Audit Log: Thiết kế bảng Log và Middleware tự động ghi nhận các sự kiện Login/Logout.
Phase 2: Authorization & RBAC (Tuần 2)
- Thiết kế DB Role/Permission: Xây dựng schema Role và Permission (chức năng phân quyền).
- API Quản trị (Admin_only): API CRUD User (Tạo tài khoản, Cấp Role, Reset Password, Deactivate/Lockout User).
- DRF Permission Classes: Viết custom Permission Classes (ví dụ:
IsProductionManager,HasPermission(prod_create)) để tái sử dụng cho toàn bộ các Endpoints khác của hệ thống sau này.
Phase 3: Hoàn thiện & Kiểm thử QC (Cuối Tuần 2)
- Viết Unit Test cho luồng chặn đăng nhập khi sai 5 lần (Lockout mechanism).
- Viết Unit Test cho Custom Permission Classes (Đảm bảo Worker không thể truy cập API tạo Master Data).
- Deploy lên môi trường Staging và kiểm thử E2E tích hợp frontend thực tế.