Task Phase2 01
Notification
phase: phase2id: task-phase2-01module: User-ManagementDepends on: task-phase1-01Reference: 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.pycode: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 Truebusiness_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 Userbusiness_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_staffhoặ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,PermissionDeniedlog_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}.