Skip to content

Expose validator function

Compare
Choose a tag to compare
@w01fgang w01fgang released this 11 Aug 10:43
· 11 commits to main since this release
668ab46

After this release, you can provide your own validator function.

import { PermissionGateProvider } from 'permission-gate';
...

// define or get from api rules and freeze them
const rules = Object.freeze({
  componentName: ['admin', 'user', 'other-role'],
  anotherComponentName: ['admin'],
});

function validator({ role, rulesMap, name }) {
  // default validator implementation
  const scope = rulesMap[name];
  if (!scope) return true;

  return scope.includes(role);
}

function MyApp() {
  const role = 'user'; // get from authenticated user

  return (
    <PermissionGateProvider role={role} rulesMap={rules} validator={validator}>
      <App />
    </PermissionGateProvider>
  )
}