1.0.0 • Published 5 months ago

@cognam/access-control v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

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-control

Peer 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

PropTypeDefaultDescription
allowedPermissionsarray[]Array of required permission strings
childrenReactNodenullContent to render when authorized
renderNoAccessfunction() => nullFunction that returns content when not authorized
flagstring"EVERY""EVERY" = all permissions required, "SOME" = any
storageStoragesessionStorageStorage mechanism to use for token

checkPermissions Parameters

ParameterTypeDefaultDescription
allowedPermissionsarray[]Array of required permission strings
flagstring"EVERY""EVERY" or "SOME"
storageStoragesessionStorageStorage 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