Project

General

Profile

RBAC » History » Version 5

karnake ruengchaicharnkij, 04/19/2026 08:19 AM

1 1 karnake ruengchaicharnkij
# RBAC
2 4 karnake ruengchaicharnkij
[Page ID](PageId) 
3 5 karnake ruengchaicharnkij
## Example
4
{{collapse(JSON...)
5
```json
6 1 karnake ruengchaicharnkij
{
7 5 karnake ruengchaicharnkij
  "version": "1.0",
8
  "roles": [
9
    {
10
      "id": "admin",
11
      "name": "Admin",
12
      "rules": [
13
        {
14
          "page": {
15
            "id": "admin_onboarding",
16
            "name": "Admin Onboarding",
17
            "sections": [
18
              {
19
                "id": "admin_onboarding_data",
20
                "name": "Onboarding Data",
21
                "permissions": ["checker", "maker", "approver"]
22
              },
23
              {
24
                "id": "admin_onboarding_documents",
25
                "name": "Documents",
26
                "permissions": ["checker"]
27
              }
28
            ]
29
          }
30
        },
31
        {
32
          "page": {
33
            "id": "user_management",
34
            "name": "User Management",
35
            "sections": [
36
              {
37
                "id": "user_list",
38
                "name": "User List",
39
                "permissions": ["maker", "approver"]
40
              }
41
            ]
42
          }
43
        }
44
      ]
45
    },
46
    {
47
      "id": "supervisor",
48
      "name": "Supervisor",
49
      "rules": [
50
        {
51
          "page": {
52
            "id": "admin_onboarding",
53
            "name": "Admin Onboarding",
54
            "sections": [
55
              {
56
                "id": "admin_onboarding_data",
57
                "name": "Onboarding Data",
58
                "permissions": ["checker", "approver"]
59
              }
60
            ]
61
          }
62
        }
63
      ]
64
    }
65
  ],
66
  "permission_definitions": {
67
    "checker": "Can view and verify data",
68
    "maker":   "Can create and edit data",
69
    "approver": "Can approve or reject data"
70
  }
71 1 karnake ruengchaicharnkij
}
72
```
73 5 karnake ruengchaicharnkij
}}
74
75
{{collapse(React Hook...)
76
``` javascript
77
function usePagePermission(pageId: string, sectionId: string) {
78
  const { userRole, config } = useAuth()
79
80
  return {
81
    canCheck:   hasPermission(config, userRole, pageId, sectionId, 'checker'),
82
    canMake:    hasPermission(config, userRole, pageId, sectionId, 'maker'),
83
    canApprove: hasPermission(config, userRole, pageId, sectionId, 'approver'),
84
  }
85
}
86
87
// ใน component
88
function OnboardingPage() {
89
  const { canMake, canApprove } = usePagePermission('admin_onboarding', 'admin_onboarding_data')
90
91
  return (
92
    <div>
93
      {canMake    && <button>Edit</button>}
94
      {canApprove && <button>Approve</button>}
95
    </div>
96
  )
97
}
98
```
99
}}
100 1 karnake ruengchaicharnkij
**Enumbulator**
101
102
|Permission_name |Permission_id |
103
|--|--|
104
|maker  |11  |
105
|checker |12  |
106
|approver |13 |