# Permission Test Matrix

## Persona ที่ใช้จริงในระบบ

| Persona     | System / Membership Role        | Business Role |
| ----------- | ------------------------------- | ------------- |
| Super Admin | `systemRole = super_admin`      | `IT`          |
| HRD Admin   | membership `owner` หรือ `admin` | `HRD`         |
| Employee    | membership `member`             | `EMPLOYEE`    |

## Capability Matrix

| Module / Capability                 | Super Admin | HRD Admin                            | Employee | หมายเหตุ                        |
| ----------------------------------- | ----------- | ------------------------------------ | -------- | ------------------------------- |
| Login                               | Allow       | Allow                                | Allow    | ทุก persona ต้อง login ได้      |
| Dashboard Overview                  | Allow       | Allow                                | Allow    | เนื้อหาต้องต่างกันตาม scope     |
| Organizers                          | Allow       | Deny                                 | Deny     | ระดับระบบ                       |
| Users List / Create / Edit          | Allow       | ตาม implementation ปัจจุบัน HRD menu | Deny     | nav และ route ต้องสอดคล้องกัน   |
| Employee Directory                  | Allow       | Allow                                | Deny     | ขอบเขตองค์กรเท่านั้น            |
| Courses                             | Allow       | Allow                                | Deny     | ระดับจัดการข้อมูลหลัก           |
| Training Policy                     | Allow       | Allow                                | Deny     |                                 |
| Training Matrix                     | Allow       | Allow                                | Deny     |                                 |
| Training Record - Create for Self   | Allow       | Allow                                | Allow    | employee จำกัดเฉพาะของตนเอง     |
| Training Record - Create for Others | Allow       | Allow                                | Deny     |                                 |
| Training Record - Review            | Allow       | Allow                                | Deny     | pending review                  |
| Training Record - View All          | Allow       | Allow                                | Deny     | employee เห็นเฉพาะตนเอง         |
| Certificate Upload                  | Allow       | Allow                                | Allow    | เฉพาะ record ที่ policy อนุญาต  |
| Announcements Manage                | Allow       | Allow                                | Deny     | employee อ่านอย่างเดียว         |
| Announcements Read Public           | Allow       | Allow                                | Allow    | published + active window       |
| Online Lessons Manage               | Allow       | Allow                                | Deny     | employee อ่านอย่างเดียว         |
| Online Lessons Read Public          | Allow       | Allow                                | Allow    | `is_published = true`           |
| Reports Organization Scope          | Allow       | Allow                                | Deny     | employee self only              |
| Reports Self Scope                  | Allow       | Allow                                | Allow    |                                 |
| Reports Export Excel/PDF            | Allow       | Allow                                | Allow    | แต่ข้อมูลต้อง respect scope     |
| Notifications Read                  | Allow       | Allow                                | Allow    |                                 |
| Notifications Mark Read             | Allow       | Allow                                | Allow    |                                 |
| Import Employees                    | Allow       | Allow                                | Deny     |                                 |
| Master Review                       | Allow       | Allow                                | Deny     |                                 |
| Permission Templates                | Allow       | Deny                                 | Deny     | super admin only ตาม nav/access |
| User Permissions                    | Allow       | Deny                                 | Deny     | super admin only                |
| Permission Audit Logs               | Allow       | Deny                                 | Deny     | super admin only                |
| Audit Logs                          | Allow       | Deny                                 | Deny     | super admin only                |

## Permission Test Checklist

| Test ID | Check                                                | Expected                  |
| ------- | ---------------------------------------------------- | ------------------------- |
| PM-001  | Super Admin เปิด `/dashboard/permissions/templates`  | เข้าถึงได้                |
| PM-002  | HRD Admin เปิด `/dashboard/permissions/templates`    | ถูกปฏิเสธ                 |
| PM-003  | Employee เปิด `/dashboard/permissions/templates`     | ถูกปฏิเสธ                 |
| PM-004  | Employee เปิด `/dashboard/users`                     | ถูกปฏิเสธ                 |
| PM-005  | Employee เปิด `/dashboard/employee-directory`        | ถูกปฏิเสธ                 |
| PM-006  | Employee เปิด `/dashboard/reports`                   | เห็นเฉพาะข้อมูลตนเอง      |
| PM-007  | Employee เปิด training records ของคนอื่นผ่าน URL/API | ถูกปฏิเสธหรือไม่พบข้อมูล  |
| PM-008  | Employee แก้ query string report เอง                 | ยังคง self-scope          |
| PM-009  | HRD Admin เปิด `/dashboard/audit-logs`               | ถูกปฏิเสธ                 |
| PM-010  | Super Admin เปิด `/dashboard/audit-logs`             | เข้าถึงได้                |
| PM-011  | Employee เห็น announcement draft                     | ต้องไม่เห็น               |
| PM-012  | Employee เห็น online lesson draft                    | ต้องไม่เห็น               |
| PM-013  | HRD Admin review pending training record             | ทำได้                     |
| PM-014  | Employee review pending training record              | ทำไม่ได้                  |
| PM-015  | Employee สร้าง record ให้ user คนอื่น                | ทำไม่ได้                  |
| PM-016  | HRD Admin import employees                           | ทำได้                     |
| PM-017  | Employee import employees                            | ทำไม่ได้                  |
| PM-018  | Cross-organization access ผ่าน URL หรือ API          | ต้องไม่เห็นข้อมูลข้าม org |

## หมายเหตุ

- role แบบ `Staff`, `Manager`, `HRD Manager` ไม่พบเป็น runtime role จริงใน implementation ปัจจุบัน จึงไม่สร้าง permission matrix แยกให้ในรอบนี้
