Skip to content

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 AbstractBaseUser củ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ế.