การกำหนดสิทธิ์ผู้ใช้ (Per-Module Permissions)
หนึ่งใน feature สำคัญที่สุดของ WMS — ความสามารถในการ "ปรับสิทธิ์รายโมดูล" ของผู้ใช้แต่ละคน
ทบทวน: 3-tier Permission System
Tier 1: Role
↓
Tier 2: Module Access (Read / Write)
↓
Tier 3: Specific Actionตัวอย่าง:
- Role = Manager → กำหนดเพดานสิทธิ์
- Module Access = "Users: Read only" → Override Role default
- Action = "Reset Password" → ต้องมี Action permission แยก
Role Hierarchy
SuperAdmin ← มีทุกอย่าง
│
Admin ← มีเกือบทุกอย่าง (ยกเว้น Delete Tenant)
│
Manager ← จัดการคลังที่ดูแล
│
Supervisor ← คุมงานกะ
│
Operator ← ทำงานคลัง
│
Viewer ← อ่านอย่างเดียวUse Case 1 — "ให้ Manager เข้าได้แค่ Users + Audit"
โจทย์: มี Manager คนหนึ่ง ดูแลเรื่อง HR ไม่ต้องยุ่งงานคลัง — ให้เข้าได้แค่จัดการ Users + ดู Audit
ขั้นตอน
- เข้า Admin Portal → Sidebar → Users
- ค้นชื่อ Manager คนนี้ → กดเปิด
- ที่ Tab Role & Access:
- Role: ยังคงเป็น Manager (เพราะต้องมี Manager-level approvals)
- ที่ Tab Per-Module Permissions — Override:
| Module | Read | Write |
|---|---|---|
| Master Data — Items | ❌ | ❌ |
| Master Data — Locations | ❌ | ❌ |
| Master Data — Warehouses | ❌ | ❌ |
| Inbound (ASN, GRN, Putaway) | ❌ | ❌ |
| Outbound (Orders, Waves, Picks) | ❌ | ❌ |
| Inventory (Stock, Movements) | ❌ | ❌ |
| Adjustments | ❌ | ❌ |
| Returns (RMA) | ❌ | ❌ |
| Approvals | ❌ | ❌ |
| Admin — Users | ✅ | ✅ |
| Admin — Audit Logs | ✅ | ❌ |
| Admin — Roles | ❌ | ❌ |
| Admin — WMS Settings | ❌ | ❌ |
- กด Save
ผลลัพธ์
- User คนนี้ Login เห็นแค่ Admin Portal
- Sidebar เห็นแค่ 2 เมนู: Users, Audit Logs
- ใน Users — เพิ่ม / แก้ไข User ได้
- ใน Audit — อ่านได้แต่ Export ไม่ได้
Save เป็น Template ไว้ใช้ซ้ำ
ถ้ามี HR Manager หลายคน → สร้างเป็น Permission Template ชื่อ "HR Manager" → next User ใช้ Template ได้เลย
Use Case 2 — "Viewer ที่เห็นเฉพาะ Stock"
โจทย์: ผู้บริหารต้องการดู Stock อย่างเดียว ไม่ต้องเห็นข้อมูลอื่น
ขั้นตอน
- สร้าง User ใหม่ (หรือเลือกที่มีอยู่)
- Tab Role & Access:
- Role: Viewer
- Tab Per-Module Permissions:
| Module | Read | Write |
|---|---|---|
| Dashboard | ✅ | ❌ |
| Master Data — Items | ❌ | ❌ |
| Inbound | ❌ | ❌ |
| Outbound | ❌ | ❌ |
| Inventory — Stock | ✅ | ❌ |
| Inventory — Movements | ❌ | ❌ |
| Inventory — Adjustments | ❌ | ❌ |
| Returns | ❌ | ❌ |
| Approvals | ❌ | ❌ |
| Admin Portal | ❌ | ❌ |
- Assigned Warehouses — เลือกเฉพาะคลังที่ดูได้
- Save
ผลลัพธ์
- User Login → เห็นแค่ Dashboard + Stock
- ใน Stock — กรอง / Search / Export ได้ แต่แก้ไขไม่ได้
- เข้าไม่ได้ Admin Portal
Use Case 3 — "Operator ที่ทำได้แค่ Pick"
โจทย์: พนักงานกะกลางคืน หยิบสินค้าอย่างเดียว ไม่ต้องการให้ทำอย่างอื่น
ขั้นตอน
- User → Role: Operator
- Per-Module:
| Module | Read | Write |
|---|---|---|
| Dashboard | ✅ | ❌ |
| Outbound — Pick Tasks | ✅ | ✅ |
| Outbound — Orders | ❌ | ❌ |
| Outbound — Waves | ❌ | ❌ |
| Outbound — Shipments | ❌ | ❌ |
| Inbound | ❌ | ❌ |
| Inventory | ❌ | ❌ |
| Returns | ❌ | ❌ |
| Approvals | ❌ | ❌ |
ผลลัพธ์
- เห็นเฉพาะ Pick Tasks ของตัวเอง
- ไม่เห็น Orders / Waves
- เข้าไม่ได้โมดูลอื่น
ข้อควรรู้
Permissions ที่ห้าม Override
- Audit Log — แม้จะปิด ทุก action ของ User คนนี้ก็ยังถูกบันทึก
- 2FA Required — ถ้า Role บังคับ 2FA จะ override ไม่ได้
การเปลี่ยน Role
- ถ้า เลื่อน Role (เช่น Operator → Supervisor) — Permissions ปัจจุบันคงไว้
- ถ้าต้องการ Reset → กด Reset to Role Default
Apply Template ทับ
- เมื่อ Apply Template → Permissions ทั้งหมดถูก overwrite ตาม Template
- ระบบจะ warn ก่อน
Audit Trail
ทุกการเปลี่ยน Permission ถูกบันทึก:
- ใครเปลี่ยน
- เปลี่ยนของใคร
- ก่อน → หลัง
- เมื่อไหร่
ดูใน Audit Logs