@object-ui/permissions 0.1.0 → 3.0.0

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.
Files changed (2) hide show
  1. package/README.md +126 -0
  2. package/package.json +4 -4
package/README.md ADDED
@@ -0,0 +1,126 @@
1
+ # @object-ui/permissions
2
+
3
+ Role-Based Access Control (RBAC) for Object UI — permission guards, field-level access, and policy evaluation.
4
+
5
+ ## Features
6
+
7
+ - 🔐 **PermissionProvider** - Context provider for permission-aware applications
8
+ - 🛡️ **PermissionGuard** - Conditionally render components based on user permissions
9
+ - 🎣 **usePermissions** - Hook for checking access to actions and resources
10
+ - 📝 **Field-Level Permissions** - Control visibility and editability per field with `useFieldPermissions`
11
+ - 🔍 **Row-Level Security** - Filter data based on permission conditions
12
+ - ⚡ **Permission Evaluator** - Programmatic permission checking engine
13
+ - 🎯 **Type-Safe** - Full TypeScript support with exported types
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install @object-ui/permissions
19
+ ```
20
+
21
+ **Peer Dependencies:**
22
+ - `react` ^18.0.0 || ^19.0.0
23
+ - `react-dom` ^18.0.0 || ^19.0.0
24
+
25
+ ## Quick Start
26
+
27
+ ```tsx
28
+ import { PermissionProvider, usePermissions, PermissionGuard } from '@object-ui/permissions';
29
+
30
+ function App() {
31
+ return (
32
+ <PermissionProvider
33
+ roles={['admin', 'editor']}
34
+ permissions={{
35
+ orders: { read: true, create: true, update: true, delete: false },
36
+ }}
37
+ >
38
+ <Dashboard />
39
+ </PermissionProvider>
40
+ );
41
+ }
42
+
43
+ function Dashboard() {
44
+ const { can } = usePermissions();
45
+
46
+ return (
47
+ <div>
48
+ <h1>Orders</h1>
49
+ <PermissionGuard action="create" resource="orders" fallback={<p>No access</p>}>
50
+ <button>Create Order</button>
51
+ </PermissionGuard>
52
+ {can('delete', 'orders') && <button>Delete</button>}
53
+ </div>
54
+ );
55
+ }
56
+ ```
57
+
58
+ ## API
59
+
60
+ ### PermissionProvider
61
+
62
+ Wraps your application with permission context:
63
+
64
+ ```tsx
65
+ <PermissionProvider roles={['editor']} permissions={permissionMap}>
66
+ <App />
67
+ </PermissionProvider>
68
+ ```
69
+
70
+ ### usePermissions
71
+
72
+ Hook for checking permissions programmatically:
73
+
74
+ ```tsx
75
+ const { can, cannot, roles } = usePermissions();
76
+
77
+ if (can('update', 'orders')) {
78
+ // allow editing
79
+ }
80
+ ```
81
+
82
+ ### useFieldPermissions
83
+
84
+ Hook for field-level permission checks:
85
+
86
+ ```tsx
87
+ const { isVisible, isEditable } = useFieldPermissions('orders', 'discount');
88
+ ```
89
+
90
+ ### PermissionGuard
91
+
92
+ Conditionally renders children based on permissions:
93
+
94
+ ```tsx
95
+ <PermissionGuard action="delete" resource="orders" fallback={<span>Read only</span>}>
96
+ <DeleteButton />
97
+ </PermissionGuard>
98
+ ```
99
+
100
+ ### evaluatePermission
101
+
102
+ Programmatic permission evaluation:
103
+
104
+ ```tsx
105
+ import { evaluatePermission } from '@object-ui/permissions';
106
+
107
+ const result = evaluatePermission({
108
+ action: 'update',
109
+ resource: 'orders',
110
+ roles: ['editor'],
111
+ permissions: permissionConfig,
112
+ });
113
+ ```
114
+
115
+ ### createPermissionStore
116
+
117
+ Creates a permission store for advanced use cases:
118
+
119
+ ```tsx
120
+ const store = createPermissionStore(permissionConfig);
121
+ store.check('read', 'orders'); // true | false
122
+ ```
123
+
124
+ ## License
125
+
126
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/permissions",
3
- "version": "0.1.0",
3
+ "version": "3.0.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "RBAC permission system for Object UI with object/field/row-level access control, permission guards, and hooks.",
@@ -26,11 +26,11 @@
26
26
  "react": "^18.0.0 || ^19.0.0"
27
27
  },
28
28
  "dependencies": {
29
- "@object-ui/types": "0.5.0"
29
+ "@object-ui/types": "3.0.0"
30
30
  },
31
31
  "devDependencies": {
32
- "@types/react": "^19.2.13",
33
- "react": "^19.1.0",
32
+ "@types/react": "19.2.13",
33
+ "react": "19.2.4",
34
34
  "typescript": "^5.9.3",
35
35
  "vitest": "^4.0.18"
36
36
  },