1.0.0 • Published 5 months ago
@cognam/access-control v1.0.0
Access Control Package
A React component and utility for handling permission-based access control using JWT tokens.
Features
- 🔒 Permission-based access control
- ⚛️ React component for conditional rendering
- 🔧 Utility function for direct permission checks
- 🔄 Supports "EVERY" (all permissions required) and "SOME" (any permission) modes
- 💾 Configurable storage mechanism (sessionStorage by default)
Installation
npm install @cognam/access-controlPeer Dependencies
This package requires:
- React (17+)
- react-dom (17+)
- jwt-decode (3+)
Usage
AccessControl Component
import AccessControl from '@cognam/access-control';
function ProtectedComponent() {
return (
<AccessControl
allowedPermissions={['VIEW_DASHBOARD', 'EDIT_CONTENT']}
renderNoAccess={() => <div>You don't have permission</div>}
>
<Dashboard />
</AccessControl>
);
}checkPermissions Utility
import { checkPermissions } from '@cognam/access-control';
const hasAccess = checkPermissions(
['VIEW_REPORTS', 'EDIT_REPORTS'],
'SOME',
localStorage // optional storage override
);Props
| Prop | Type | Default | Description |
|---|---|---|---|
| allowedPermissions | array | [] | Array of required permission strings |
| children | ReactNode | null | Content to render when authorized |
| renderNoAccess | function | () => null | Function that returns content when not authorized |
| flag | string | "EVERY" | "EVERY" = all permissions required, "SOME" = any |
| storage | Storage | sessionStorage | Storage mechanism to use for token |
checkPermissions Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| allowedPermissions | array | [] | Array of required permission strings |
| flag | string | "EVERY" | "EVERY" or "SOME" |
| storage | Storage | sessionStorage | Storage mechanism for token |
Custom Storage
You can use any storage mechanism that implements the Web Storage API:
<AccessControl
allowedPermissions={['ADMIN']}
storage={localStorage} // or your custom storage
>
<AdminPanel />
</AccessControl>Error Handling
The package handles:
- Missing tokens
- Invalid tokens
- Missing permissions in token
- Storage errors
1.0.0
5 months ago