8.4 KiB
8.4 KiB
Role & Permission Management Implementation Report
วันที่อัปเดต: 2026-07-07
1. Summary
พัฒนา Coding Phase 1 ของระบบ Role & Permission Management ตามแผนใน docs/role-permission-management-plan.md โดยยังคง compatibility mode เดิมของระบบไว้ และยังไม่ย้าย feature อื่นไปใช้ permission-first model
สิ่งที่ทำแล้ว:
- สร้าง feature module
src/features/permission-management/ - เพิ่มหน้า dashboard:
/dashboard/permissions/templates/dashboard/permissions/matrix/dashboard/permissions/users/dashboard/permissions/audit-logs
- เพิ่ม route handlers สำหรับ permission templates, permission catalog, user permission assignments, overrides, และ permission audit logs
- เพิ่ม super-admin-only page guard สำหรับหน้า permission management
- เพิ่มเมนู
Permission Managementใน sidebar โดยมองเห็นเฉพาะsuper_admin - เพิ่ม report และ TODO ที่จำเป็นโดยไม่แก้ schema/migration ตามข้อกำหนดของ phase นี้
2. Files Created
src/features/permission-management/api/types.tssrc/features/permission-management/api/service.tssrc/features/permission-management/api/queries.tssrc/features/permission-management/api/mutations.tssrc/features/permission-management/schemas/permission-template.tssrc/features/permission-management/schemas/user-permission-assignment.tssrc/features/permission-management/server/permission-management-catalog.tssrc/features/permission-management/server/permission-audit-service.tssrc/features/permission-management/server/permission-template-data.tssrc/features/permission-management/server/user-permission-data.tssrc/features/permission-management/server/permission-audit-data.tssrc/features/permission-management/components/permission-status-badge.tsxsrc/features/permission-management/components/permission-template-form-sheet.tsxsrc/features/permission-management/components/permission-template-row-actions.tsxsrc/features/permission-management/components/permission-template-columns.tsxsrc/features/permission-management/components/permission-template-table.tsxsrc/features/permission-management/components/permission-template-listing.tsxsrc/features/permission-management/components/permission-matrix.tsxsrc/features/permission-management/components/effective-permission-preview.tsxsrc/features/permission-management/components/user-permission-sheet.tsxsrc/features/permission-management/components/user-permission-row-actions.tsxsrc/features/permission-management/components/user-permission-columns.tsxsrc/features/permission-management/components/user-permission-table.tsxsrc/features/permission-management/components/user-permission-listing.tsxsrc/features/permission-management/components/permission-audit-log-columns.tsxsrc/features/permission-management/components/permission-audit-log-table.tsxsrc/features/permission-management/components/permission-audit-log-listing.tsxsrc/app/dashboard/permissions/templates/page.tsxsrc/app/dashboard/permissions/matrix/page.tsxsrc/app/dashboard/permissions/users/page.tsxsrc/app/dashboard/permissions/audit-logs/page.tsxsrc/app/api/permissions/catalog/route.tssrc/app/api/permission-templates/route.tssrc/app/api/permission-templates/[id]/route.tssrc/app/api/permission-templates/[id]/clone/route.tssrc/app/api/permission-templates/[id]/activate/route.tssrc/app/api/permission-templates/[id]/deactivate/route.tssrc/app/api/user-permissions/route.tssrc/app/api/user-permissions/[userId]/route.tssrc/app/api/user-permissions/[userId]/assignment/route.tssrc/app/api/user-permissions/[userId]/overrides/route.tssrc/app/api/user-permissions/[userId]/overrides/[overrideId]/route.tssrc/app/api/user-permissions/[userId]/effective/route.tssrc/app/api/permission-audit-logs/route.tsdocs/role-permission-management-implementation-report.md
3. Files Modified
src/lib/auth/session.tssrc/lib/auth/page-guards.tssrc/config/nav-config.ts
4. API Implemented
Permission Templates
GET /api/permission-templatesPOST /api/permission-templatesGET /api/permission-templates/[id]PATCH /api/permission-templates/[id]DELETE /api/permission-templates/[id]POST /api/permission-templates/[id]/clonePOST /api/permission-templates/[id]/activatePOST /api/permission-templates/[id]/deactivate
Permission Catalog
GET /api/permissions/catalog
User Permissions
GET /api/user-permissionsGET /api/user-permissions/[userId]PUT /api/user-permissions/[userId]/assignmentGET /api/user-permissions/[userId]/effectivePOST /api/user-permissions/[userId]/overridesPATCH /api/user-permissions/[userId]/overrides/[overrideId]DELETE /api/user-permissions/[userId]/overrides/[overrideId]
Permission Audit Logs
GET /api/permission-audit-logs
5. UI Pages
-
Permission Templates- table + search + pagination + sorting
- create/edit sheet
- clone / activate / deactivate / soft delete actions
-
Permission Matrix- grouped permission catalog
- read-only checklist-style layout
-
User Permissions- user table + search
- manage sheet สำหรับ assign template และ allow/deny permissions
- effective permission preview
-
Permission Audit Logs- table + filters ผ่าน query params เดิมของระบบ
- data source ใหม่จาก
permission_audit_logs
6. Remaining TODO
- เพิ่ม DB-level constraint สำหรับ
1 active template per user per organization - เพิ่ม index สำหรับ
permission_audit_logsถ้าข้อมูลโต - ปรับ UI assignment ให้รองรับ granular override management แบบแยก create/edit/delete ในหน้าเดียว
- แสดง
target userใน permission audit log ให้ครบกว่านี้ - เพิ่ม form-level search/filter สำหรับ permission checklist เมื่อจำนวน permission โตขึ้น
- เชื่อม default template seed จริงในฐานข้อมูล
7. Known Limitations
- phase นี้ยังไม่แก้ schema หรือ migration ตาม requirement
- การบังคับ
1 active templateตอนนี้ทำใน application logic และมี TODO ชัดเจนไว้ใน server layer - หน้า
User Permissionsใช้ flow แบบ save assignment ทั้งชุดในครั้งเดียวเป็นหลัก แม้ route override แยกจะถูกสร้างไว้แล้ว - หน้า
Permission Matrixเป็น read-only reference screen ยังไม่ใช่ editor เต็มรูปแบบ - หน้า
Permission Audit Logsยังแสดงรายละเอียดแบบย่อ และยังไม่ได้ reuse UI รายการเดิมแบบ 100% ในเชิง component-level
8. Compatibility Status
ยังคง compatibility mode เดิมไว้ทั้งหมด:
- ไม่ลบ
businessRole - ไม่ลบ
isHRD() - ไม่ลบ
isIT() - ไม่ย้าย feature runtime อื่นไปใช้ permission-first ในรอบนี้
- ไม่แก้ navigation เดิม ยกเว้นเพิ่มเมนู
Permission Management - authorization ของหน้าและ API ใหม่ทั้งหมดใช้
super_adminเท่านั้น โดยไม่กระทบ flow เดิมของ HRD / IT / Employee
Verification
ตรวจสอบแล้ว:
npx oxlint src/features/permission-management src/app/api/permission-templates src/app/api/user-permissions src/app/api/permissions src/app/api/permission-audit-logs src/app/dashboard/permissions src/config/nav-config.ts src/lib/auth/page-guards.ts src/lib/auth/session.tsผ่านnpx tsc --noEmitผ่าน