@robertraaijmakers/pptb-securityplugin 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,13 +1,7 @@
1
1
  # Security Roles Explorer
2
-
3
- Power Platform ToolBox tool for inspecting and managing Dataverse security roles, table privileges, and user assignments.
4
-
5
- ## Overview
6
-
7
- Security Roles Explorer helps you quickly understand which roles grant access to which tables and lets you update privileges or user-role assignments in one place.
2
+ Power Platform ToolBox tool for inspecting and managing Dataverse security roles, table privileges, and user assignments. Helps you quickly understand which roles grant access to which tables and lets you update privileges or user-role assignments in one place.
8
3
 
9
4
  ## Features
10
-
11
5
  - View role privileges by role or by table
12
6
  - Batch cache of role privilege data for faster loading
13
7
  - Sort and filter by privilege level
@@ -19,12 +13,10 @@ Security Roles Explorer helps you quickly understand which roles grant access to
19
13
  - Light/dark theme support with a manual toggle
20
14
 
21
15
  ## Requirements
22
-
23
16
  - Power Platform ToolBox (desktop app)
24
17
  - Node.js 18+ (recommended)
25
18
 
26
19
  ## Development
27
-
28
20
  Install dependencies:
29
21
 
30
22
  ```bash
@@ -43,24 +35,18 @@ Watch mode:
43
35
  npm run build:watch
44
36
  ```
45
37
 
46
- ## Loading in ToolBox
47
-
38
+ ## Loading in ToolBox (for developers)
48
39
  1. Enable Debug Menu in ToolBox settings.
49
40
  2. Use Debug > Load Local Tool and select this folder.
50
41
  3. Close and reopen the tool to refresh changes.
51
42
 
52
43
  ## Usage
53
-
54
44
  1. Select a connection in ToolBox.
55
- 2. Choose a filter mode:
56
- - By role: review privileges for a single role.
57
- - By entity: compare multiple roles for a single table.
58
- 3. Use the filters and sort controls to narrow results.
59
- 4. Change privilege levels in the grid and click Apply changes.
60
- 5. Use the Assign security roles tab to add/remove roles for users.
45
+ 2. Use the filters and sort controls to narrow results.
46
+ 3. Change privilege levels in the grid and click Apply changes.
47
+ 4. Use the Assign security roles tab to add/remove roles for users.
61
48
 
62
49
  ## Contributing
63
-
64
50
  1. Fork the repo.
65
51
  2. Create a feature branch.
66
52
  3. Make changes with small, focused commits.
@@ -68,11 +54,9 @@ npm run build:watch
68
54
  5. Open a pull request with a clear description and screenshots if UI changes.
69
55
 
70
56
  ## Troubleshooting
71
-
72
57
  - If the tool shows "Not connected", select a connection in ToolBox and reload.
73
58
  - If role privileges fail to load, verify the connection user has the required security role permissions.
74
59
  - If UI changes do not appear, ensure `npm run build` completed and reopen the tool.
75
60
 
76
61
  ## License
77
-
78
- MIT
62
+ MIT
package/dist/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # Security Roles Explorer
2
+ Power Platform ToolBox tool for inspecting and managing Dataverse security roles, table privileges, and user assignments. Helps you quickly understand which roles grant access to which tables and lets you update privileges or user-role assignments in one place.
3
+
4
+ ## Features
5
+ - View role privileges by role or by table
6
+ - Batch cache of role privilege data for faster loading
7
+ - Sort and filter by privilege level
8
+ - Rights filter (all / with rights / without rights)
9
+ - Role multi-select filter (entity mode)
10
+ - Apply or undo pending privilege changes
11
+ - Assign or remove roles for users (role -> users or user -> roles)
12
+ - Activity log with timestamps
13
+ - Light/dark theme support with a manual toggle
14
+
15
+ ## Requirements
16
+ - Power Platform ToolBox (desktop app)
17
+ - Node.js 18+ (recommended)
18
+
19
+ ## Development
20
+ Install dependencies:
21
+
22
+ ```bash
23
+ npm install
24
+ ```
25
+
26
+ Build once:
27
+
28
+ ```bash
29
+ npm run build
30
+ ```
31
+
32
+ Watch mode:
33
+
34
+ ```bash
35
+ npm run build:watch
36
+ ```
37
+
38
+ ## Loading in ToolBox (for developers)
39
+ 1. Enable Debug Menu in ToolBox settings.
40
+ 2. Use Debug > Load Local Tool and select this folder.
41
+ 3. Close and reopen the tool to refresh changes.
42
+
43
+ ## Usage
44
+ 1. Select a connection in ToolBox.
45
+ 2. Use the filters and sort controls to narrow results.
46
+ 3. Change privilege levels in the grid and click Apply changes.
47
+ 4. Use the Assign security roles tab to add/remove roles for users.
48
+
49
+ ## Contributing
50
+ 1. Fork the repo.
51
+ 2. Create a feature branch.
52
+ 3. Make changes with small, focused commits.
53
+ 4. Run `npm run build` and verify in ToolBox.
54
+ 5. Open a pull request with a clear description and screenshots if UI changes.
55
+
56
+ ## Troubleshooting
57
+ - If the tool shows "Not connected", select a connection in ToolBox and reload.
58
+ - If role privileges fail to load, verify the connection user has the required security role permissions.
59
+ - If UI changes do not appear, ensure `npm run build` completed and reopen the tool.
60
+
61
+ ## License
62
+ MIT
@@ -0,0 +1,490 @@
1
+ {
2
+ "name": "@robertraaijmakers/pptb-securityplugin",
3
+ "version": "0.1.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "@robertraaijmakers/pptb-securityplugin",
9
+ "version": "0.1.0",
10
+ "license": "MIT",
11
+ "dependencies": {
12
+ "chart.js": "^4.4.1"
13
+ },
14
+ "devDependencies": {
15
+ "@pptb/types": "1.0.19-beta.3",
16
+ "esbuild": "^0.20.2",
17
+ "typescript": "^5.4.5"
18
+ }
19
+ },
20
+ "node_modules/@esbuild/aix-ppc64": {
21
+ "version": "0.20.2",
22
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
23
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
24
+ "cpu": [
25
+ "ppc64"
26
+ ],
27
+ "dev": true,
28
+ "license": "MIT",
29
+ "optional": true,
30
+ "os": [
31
+ "aix"
32
+ ],
33
+ "engines": {
34
+ "node": ">=12"
35
+ }
36
+ },
37
+ "node_modules/@esbuild/android-arm": {
38
+ "version": "0.20.2",
39
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
40
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
41
+ "cpu": [
42
+ "arm"
43
+ ],
44
+ "dev": true,
45
+ "license": "MIT",
46
+ "optional": true,
47
+ "os": [
48
+ "android"
49
+ ],
50
+ "engines": {
51
+ "node": ">=12"
52
+ }
53
+ },
54
+ "node_modules/@esbuild/android-arm64": {
55
+ "version": "0.20.2",
56
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
57
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
58
+ "cpu": [
59
+ "arm64"
60
+ ],
61
+ "dev": true,
62
+ "license": "MIT",
63
+ "optional": true,
64
+ "os": [
65
+ "android"
66
+ ],
67
+ "engines": {
68
+ "node": ">=12"
69
+ }
70
+ },
71
+ "node_modules/@esbuild/android-x64": {
72
+ "version": "0.20.2",
73
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
74
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
75
+ "cpu": [
76
+ "x64"
77
+ ],
78
+ "dev": true,
79
+ "license": "MIT",
80
+ "optional": true,
81
+ "os": [
82
+ "android"
83
+ ],
84
+ "engines": {
85
+ "node": ">=12"
86
+ }
87
+ },
88
+ "node_modules/@esbuild/darwin-arm64": {
89
+ "version": "0.20.2",
90
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
91
+ "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
92
+ "cpu": [
93
+ "arm64"
94
+ ],
95
+ "dev": true,
96
+ "license": "MIT",
97
+ "optional": true,
98
+ "os": [
99
+ "darwin"
100
+ ],
101
+ "engines": {
102
+ "node": ">=12"
103
+ }
104
+ },
105
+ "node_modules/@esbuild/darwin-x64": {
106
+ "version": "0.20.2",
107
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
108
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
109
+ "cpu": [
110
+ "x64"
111
+ ],
112
+ "dev": true,
113
+ "license": "MIT",
114
+ "optional": true,
115
+ "os": [
116
+ "darwin"
117
+ ],
118
+ "engines": {
119
+ "node": ">=12"
120
+ }
121
+ },
122
+ "node_modules/@esbuild/freebsd-arm64": {
123
+ "version": "0.20.2",
124
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
125
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
126
+ "cpu": [
127
+ "arm64"
128
+ ],
129
+ "dev": true,
130
+ "license": "MIT",
131
+ "optional": true,
132
+ "os": [
133
+ "freebsd"
134
+ ],
135
+ "engines": {
136
+ "node": ">=12"
137
+ }
138
+ },
139
+ "node_modules/@esbuild/freebsd-x64": {
140
+ "version": "0.20.2",
141
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
142
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
143
+ "cpu": [
144
+ "x64"
145
+ ],
146
+ "dev": true,
147
+ "license": "MIT",
148
+ "optional": true,
149
+ "os": [
150
+ "freebsd"
151
+ ],
152
+ "engines": {
153
+ "node": ">=12"
154
+ }
155
+ },
156
+ "node_modules/@esbuild/linux-arm": {
157
+ "version": "0.20.2",
158
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
159
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
160
+ "cpu": [
161
+ "arm"
162
+ ],
163
+ "dev": true,
164
+ "license": "MIT",
165
+ "optional": true,
166
+ "os": [
167
+ "linux"
168
+ ],
169
+ "engines": {
170
+ "node": ">=12"
171
+ }
172
+ },
173
+ "node_modules/@esbuild/linux-arm64": {
174
+ "version": "0.20.2",
175
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
176
+ "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
177
+ "cpu": [
178
+ "arm64"
179
+ ],
180
+ "dev": true,
181
+ "license": "MIT",
182
+ "optional": true,
183
+ "os": [
184
+ "linux"
185
+ ],
186
+ "engines": {
187
+ "node": ">=12"
188
+ }
189
+ },
190
+ "node_modules/@esbuild/linux-ia32": {
191
+ "version": "0.20.2",
192
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
193
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
194
+ "cpu": [
195
+ "ia32"
196
+ ],
197
+ "dev": true,
198
+ "license": "MIT",
199
+ "optional": true,
200
+ "os": [
201
+ "linux"
202
+ ],
203
+ "engines": {
204
+ "node": ">=12"
205
+ }
206
+ },
207
+ "node_modules/@esbuild/linux-loong64": {
208
+ "version": "0.20.2",
209
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
210
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
211
+ "cpu": [
212
+ "loong64"
213
+ ],
214
+ "dev": true,
215
+ "license": "MIT",
216
+ "optional": true,
217
+ "os": [
218
+ "linux"
219
+ ],
220
+ "engines": {
221
+ "node": ">=12"
222
+ }
223
+ },
224
+ "node_modules/@esbuild/linux-mips64el": {
225
+ "version": "0.20.2",
226
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
227
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
228
+ "cpu": [
229
+ "mips64el"
230
+ ],
231
+ "dev": true,
232
+ "license": "MIT",
233
+ "optional": true,
234
+ "os": [
235
+ "linux"
236
+ ],
237
+ "engines": {
238
+ "node": ">=12"
239
+ }
240
+ },
241
+ "node_modules/@esbuild/linux-ppc64": {
242
+ "version": "0.20.2",
243
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
244
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
245
+ "cpu": [
246
+ "ppc64"
247
+ ],
248
+ "dev": true,
249
+ "license": "MIT",
250
+ "optional": true,
251
+ "os": [
252
+ "linux"
253
+ ],
254
+ "engines": {
255
+ "node": ">=12"
256
+ }
257
+ },
258
+ "node_modules/@esbuild/linux-riscv64": {
259
+ "version": "0.20.2",
260
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
261
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
262
+ "cpu": [
263
+ "riscv64"
264
+ ],
265
+ "dev": true,
266
+ "license": "MIT",
267
+ "optional": true,
268
+ "os": [
269
+ "linux"
270
+ ],
271
+ "engines": {
272
+ "node": ">=12"
273
+ }
274
+ },
275
+ "node_modules/@esbuild/linux-s390x": {
276
+ "version": "0.20.2",
277
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
278
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
279
+ "cpu": [
280
+ "s390x"
281
+ ],
282
+ "dev": true,
283
+ "license": "MIT",
284
+ "optional": true,
285
+ "os": [
286
+ "linux"
287
+ ],
288
+ "engines": {
289
+ "node": ">=12"
290
+ }
291
+ },
292
+ "node_modules/@esbuild/linux-x64": {
293
+ "version": "0.20.2",
294
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
295
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
296
+ "cpu": [
297
+ "x64"
298
+ ],
299
+ "dev": true,
300
+ "license": "MIT",
301
+ "optional": true,
302
+ "os": [
303
+ "linux"
304
+ ],
305
+ "engines": {
306
+ "node": ">=12"
307
+ }
308
+ },
309
+ "node_modules/@esbuild/netbsd-x64": {
310
+ "version": "0.20.2",
311
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
312
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
313
+ "cpu": [
314
+ "x64"
315
+ ],
316
+ "dev": true,
317
+ "license": "MIT",
318
+ "optional": true,
319
+ "os": [
320
+ "netbsd"
321
+ ],
322
+ "engines": {
323
+ "node": ">=12"
324
+ }
325
+ },
326
+ "node_modules/@esbuild/openbsd-x64": {
327
+ "version": "0.20.2",
328
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
329
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
330
+ "cpu": [
331
+ "x64"
332
+ ],
333
+ "dev": true,
334
+ "license": "MIT",
335
+ "optional": true,
336
+ "os": [
337
+ "openbsd"
338
+ ],
339
+ "engines": {
340
+ "node": ">=12"
341
+ }
342
+ },
343
+ "node_modules/@esbuild/sunos-x64": {
344
+ "version": "0.20.2",
345
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
346
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
347
+ "cpu": [
348
+ "x64"
349
+ ],
350
+ "dev": true,
351
+ "license": "MIT",
352
+ "optional": true,
353
+ "os": [
354
+ "sunos"
355
+ ],
356
+ "engines": {
357
+ "node": ">=12"
358
+ }
359
+ },
360
+ "node_modules/@esbuild/win32-arm64": {
361
+ "version": "0.20.2",
362
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
363
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
364
+ "cpu": [
365
+ "arm64"
366
+ ],
367
+ "dev": true,
368
+ "license": "MIT",
369
+ "optional": true,
370
+ "os": [
371
+ "win32"
372
+ ],
373
+ "engines": {
374
+ "node": ">=12"
375
+ }
376
+ },
377
+ "node_modules/@esbuild/win32-ia32": {
378
+ "version": "0.20.2",
379
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
380
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
381
+ "cpu": [
382
+ "ia32"
383
+ ],
384
+ "dev": true,
385
+ "license": "MIT",
386
+ "optional": true,
387
+ "os": [
388
+ "win32"
389
+ ],
390
+ "engines": {
391
+ "node": ">=12"
392
+ }
393
+ },
394
+ "node_modules/@esbuild/win32-x64": {
395
+ "version": "0.20.2",
396
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
397
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
398
+ "cpu": [
399
+ "x64"
400
+ ],
401
+ "dev": true,
402
+ "license": "MIT",
403
+ "optional": true,
404
+ "os": [
405
+ "win32"
406
+ ],
407
+ "engines": {
408
+ "node": ">=12"
409
+ }
410
+ },
411
+ "node_modules/@kurkle/color": {
412
+ "version": "0.3.4",
413
+ "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz",
414
+ "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==",
415
+ "license": "MIT"
416
+ },
417
+ "node_modules/@pptb/types": {
418
+ "version": "1.0.19-beta.3",
419
+ "resolved": "https://registry.npmjs.org/@pptb/types/-/types-1.0.19-beta.3.tgz",
420
+ "integrity": "sha512-pqHEv49UNvtSzPy2WZ6n9oVT4rXvu96/LXGolS6cDO0gOgxya2+OEZn8gLlNujoNXG2/WVI1yu52OYBvGF9/nQ==",
421
+ "dev": true,
422
+ "license": "GPL-3.0"
423
+ },
424
+ "node_modules/chart.js": {
425
+ "version": "4.5.1",
426
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz",
427
+ "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==",
428
+ "license": "MIT",
429
+ "dependencies": {
430
+ "@kurkle/color": "^0.3.0"
431
+ },
432
+ "engines": {
433
+ "pnpm": ">=8"
434
+ }
435
+ },
436
+ "node_modules/esbuild": {
437
+ "version": "0.20.2",
438
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
439
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
440
+ "dev": true,
441
+ "hasInstallScript": true,
442
+ "license": "MIT",
443
+ "bin": {
444
+ "esbuild": "bin/esbuild"
445
+ },
446
+ "engines": {
447
+ "node": ">=12"
448
+ },
449
+ "optionalDependencies": {
450
+ "@esbuild/aix-ppc64": "0.20.2",
451
+ "@esbuild/android-arm": "0.20.2",
452
+ "@esbuild/android-arm64": "0.20.2",
453
+ "@esbuild/android-x64": "0.20.2",
454
+ "@esbuild/darwin-arm64": "0.20.2",
455
+ "@esbuild/darwin-x64": "0.20.2",
456
+ "@esbuild/freebsd-arm64": "0.20.2",
457
+ "@esbuild/freebsd-x64": "0.20.2",
458
+ "@esbuild/linux-arm": "0.20.2",
459
+ "@esbuild/linux-arm64": "0.20.2",
460
+ "@esbuild/linux-ia32": "0.20.2",
461
+ "@esbuild/linux-loong64": "0.20.2",
462
+ "@esbuild/linux-mips64el": "0.20.2",
463
+ "@esbuild/linux-ppc64": "0.20.2",
464
+ "@esbuild/linux-riscv64": "0.20.2",
465
+ "@esbuild/linux-s390x": "0.20.2",
466
+ "@esbuild/linux-x64": "0.20.2",
467
+ "@esbuild/netbsd-x64": "0.20.2",
468
+ "@esbuild/openbsd-x64": "0.20.2",
469
+ "@esbuild/sunos-x64": "0.20.2",
470
+ "@esbuild/win32-arm64": "0.20.2",
471
+ "@esbuild/win32-ia32": "0.20.2",
472
+ "@esbuild/win32-x64": "0.20.2"
473
+ }
474
+ },
475
+ "node_modules/typescript": {
476
+ "version": "5.9.3",
477
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
478
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
479
+ "dev": true,
480
+ "license": "Apache-2.0",
481
+ "bin": {
482
+ "tsc": "bin/tsc",
483
+ "tsserver": "bin/tsserver"
484
+ },
485
+ "engines": {
486
+ "node": ">=14.17"
487
+ }
488
+ }
489
+ }
490
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robertraaijmakers/pptb-securityplugin",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "displayName": "Security Roles Explorer",
5
5
  "description": "Be fully in control of your security by quickly viewing and managing which security roles give access to which tables. And who is assigned which security role.",
6
6
  "author": "Robert Raaijmakers",
@@ -23,11 +23,11 @@
23
23
  "website": "https://robertraaijmakers.github.io/pptb.securityplugin/",
24
24
  "readmeUrl": "https://raw.githubusercontent.com/robertraaijmakers/pptb.securityplugin/main/README.md"
25
25
  },
26
- "files": ["dist/**", "README.md", "docs/**"],
26
+ "files": ["dist/**", "README.md"],
27
27
  "scripts": {
28
28
  "build": "npm run build:bundle && npm run build:assets",
29
29
  "build:bundle": "esbuild src/app.ts --bundle --sourcemap --outdir=dist",
30
- "build:assets": "mkdir -p dist && cp src/index.html src/index.css dist/",
30
+ "build:assets": "mkdir -p dist && cp src/index.html src/index.css README.md dist/",
31
31
  "build:watch": "esbuild src/app.ts --bundle --sourcemap --outdir=dist --watch",
32
32
  "finalize-package": "node scripts/finalize-package.js",
33
33
  "validate:publish": "node scripts/validate-publish.js",
package/docs/index.md DELETED
@@ -1,56 +0,0 @@
1
- # Security Roles Explorer
2
-
3
- Security Roles Explorer is a Power Platform ToolBox (PPTB) tool that helps you review and manage Dataverse security roles, table privileges, and user-role assignments.
4
-
5
- ## Install
6
-
7
- 1. Open Power Platform ToolBox.
8
- 2. Go to the Tool Gallery.
9
- 3. Search for "Security Roles Explorer".
10
- 4. Install the tool.
11
-
12
- ## Connect
13
-
14
- 1. Open the tool.
15
- 2. Select a Dataverse connection in PPTB if prompted.
16
- 3. The tool will load roles, tables, and privileges automatically.
17
-
18
- ## Edit Security Roles
19
-
20
- Use this tab to view or adjust table privileges.
21
-
22
- 1. Choose a filter mode:
23
- - By role: show privileges for a single role.
24
- - By entity: compare multiple roles for a single table.
25
- 2. Use the filters or sorting to find the rows you need.
26
- 3. Change privilege levels in the grid.
27
- 4. Click Apply changes to save, or Undo changes to discard.
28
-
29
- Tips:
30
- - Use the Rights filter to show only tables with or without rights.
31
- - In entity mode, use the role filter to include or exclude roles.
32
-
33
- ## Assign Security Roles
34
-
35
- Use this tab to add or remove roles for users.
36
-
37
- 1. Choose the view:
38
- - Role -> Users: see who has a role.
39
- - User -> Roles: see roles for a user.
40
- 2. Select users or roles in the list.
41
- 3. Click Add or Remove.
42
-
43
- ## Notes
44
-
45
- - Append and Append To are related. You typically need both sides for lookups to work.
46
- - Changes are applied using Dataverse security APIs and may require appropriate permissions.
47
-
48
- ## Troubleshooting
49
-
50
- - If the tool shows "Not connected", select a connection in PPTB and reopen the tool.
51
- - If privileges fail to load, verify the account has security role admin permissions.
52
- - If changes do not show immediately, reload the tool.
53
-
54
- ## Support
55
-
56
- If you have issues or suggestions, open a GitHub issue in this repository.