RBAC » History » Version 11
karnake ruengchaicharnkij, 04/20/2026 01:04 AM
| 1 | 1 | karnake ruengchaicharnkij | # RBAC |
|---|---|---|---|
| 2 | 8 | karnake ruengchaicharnkij | [Page ID](PageId) |
| 3 | |||
| 4 | 5 | karnake ruengchaicharnkij | ## Example |
| 5 | {{collapse(JSON...) |
||
| 6 | ```json |
||
| 7 | 1 | karnake ruengchaicharnkij | { |
| 8 | 5 | karnake ruengchaicharnkij | "version": "1.0", |
| 9 | "roles": [ |
||
| 10 | { |
||
| 11 | "id": "admin", |
||
| 12 | "name": "Admin", |
||
| 13 | 10 | karnake ruengchaicharnkij | "permissions": [ |
| 14 | 11 | karnake ruengchaicharnkij | "admin_onboarding::data::maker", |
| 15 | "admin_onboarding::data::checker", |
||
| 16 | "admin_onboarding::data::approver", |
||
| 17 | "user_management::list::maker", |
||
| 18 | "user_management::list::approver" |
||
| 19 | 5 | karnake ruengchaicharnkij | ] |
| 20 | }, |
||
| 21 | { |
||
| 22 | "id": "supervisor", |
||
| 23 | "name": "Supervisor", |
||
| 24 | 10 | karnake ruengchaicharnkij | "permissions": [ |
| 25 | 11 | karnake ruengchaicharnkij | "admin_onboarding::data::checker", |
| 26 | "admin_onboarding::data::approver" |
||
| 27 | 5 | karnake ruengchaicharnkij | ] |
| 28 | } |
||
| 29 | 8 | karnake ruengchaicharnkij | ] |
| 30 | 1 | karnake ruengchaicharnkij | } |
| 31 | ``` |
||
| 32 | 5 | karnake ruengchaicharnkij | }} |
| 33 | |||
| 34 | {{collapse(React Hook...) |
||
| 35 | ``` javascript |
||
| 36 | function usePagePermission(pageId: string, sectionId: string) { |
||
| 37 | const { userRole, config } = useAuth() |
||
| 38 | |||
| 39 | return { |
||
| 40 | canCheck: hasPermission(config, userRole, pageId, sectionId, 'checker'), |
||
| 41 | canMake: hasPermission(config, userRole, pageId, sectionId, 'maker'), |
||
| 42 | canApprove: hasPermission(config, userRole, pageId, sectionId, 'approver'), |
||
| 43 | } |
||
| 44 | } |
||
| 45 | |||
| 46 | // ใน component |
||
| 47 | function OnboardingPage() { |
||
| 48 | const { canMake, canApprove } = usePagePermission('admin_onboarding', 'admin_onboarding_data') |
||
| 49 | |||
| 50 | return ( |
||
| 51 | <div> |
||
| 52 | {canMake && <button>Edit</button>} |
||
| 53 | {canApprove && <button>Approve</button>} |
||
| 54 | </div> |
||
| 55 | ) |
||
| 56 | } |
||
| 57 | ``` |
||
| 58 | }} |
||
| 59 | 7 | karnake ruengchaicharnkij | |
| 60 | 6 | karnake ruengchaicharnkij | {{collapse(Approval DB schemas...) |
| 61 | ```sql |
||
| 62 | |||
| 63 | ``` |
||
| 64 | }} |
||
| 65 | 1 | karnake ruengchaicharnkij | **Enumbulator** |
| 66 | |||
| 67 | |Permission_name |Permission_id | |
||
| 68 | |--|--| |
||
| 69 | |maker |11 | |
||
| 70 | |checker |12 | |
||
| 71 | |approver |13 | |