Skip to content

Task Phase2 01

Notification

  • phase: phase2
  • id: task-phase2-01
  • module: User-Management
  • Depends on: task-phase1-01
  • Reference: DESIGN.md, PLAN.md

Background

Sau khi có Authentication (Phase 1), hệ thống cần phân quyền chi tiết (Role-Based Access Control) cho các module khác. Phase 2 tập trung vào việc tạo các model Role, Permission, các API CRUD cho Admin quản lý User/Role, và xây dựng Custom Permission Classes của DRF.

Code Snippets/Path file code cần sửa

  • path: ./MES-Backend/users/permissions.py
  • code:
    from rest_framework.permissions import BasePermission
    class HasRolePermission(BasePermission):
        def has_permission(self, request, view):
            # Logic lấy user từ request, query Role và Permission
            # So khớp với Required Permission Code của View
            return True
    
  • business_logic: Middleware/Decorator kiểm tra quyền của User đang request xem có Permission code thỏa mãn yêu cầu của API hay không.
  • acceptance_criteria: Chặn thành công các request không đủ thẩm quyền tiến vào View (VD: Worker muốn tạo User).

  • path: ./MES-Backend/users/apis/admin_user_api.py

  • code:
    class AdminUserViewSet(viewsets.ModelViewSet):
        permission_classes = [IsAdminUser]
        # Logic CRUD operations cho model User
    
  • business_logic: API cho phép Admin tạo tài khoản mới, gán Role, khóa/mở khóa tài khoản (Deactivate).
  • acceptance_criteria: Chỉ User có cờ is_staff hoặc Role Admin mới gọi được nhóm API này.

Technical Acceptance Criteria

  • http_status: 200 OK (Lấy list), 201 Created (Tạo mới thành công), 403 Forbidden (Không đủ quyền Admin).
  • exception: NotAuthenticated, PermissionDenied
  • log_format: Ghi log các thao tác nhạy cảm (Tạo user, Update quyềng) vào bảng DB Audit Log, format Text [WARN] Admin {admin_id} updated role for User {user_id}.