Permission library for aaX
> Permission library for allaboutXpert
---
``sh`
npm i @aax/gatekeeper
Let's demonstrate usage with a few examples:
`ts
import {
Action,
Entity,
GateKeeper,
RisksAction,
Scope
} from "@aax/gatekeeper";
// Get the permission set from your user token.
// Refer to the License API or a decoded
// token for correct keys to query
const token = user.token.perms;
const gk = new GateKeeper(token);
if (gk.can(RiskAction.RISKS_CLOSE, Scope.ALL, Entity.RISKS)) {
// This user has the permission to close ALL risks
}
if (gk.can(RiskAction.RISKS_ESCALATE)) {
// This person has the right to escalate risks
// NOTE: There is no datascope being enforced on this query
// so it will only be used for instances where you
// want to e.g. show a button or meny entry
}
if (gk.can(Action.VIEW, Scope.ALL, Entity.Risks)) {
// This user has the permuission view ALL risks
}
`
The library will not throw any Errors so try/catch blocks are not necessary. That being said when NODE_ENV=development the library will throw an Error but only as a warning that you have used the library incorrectly so keep an eye out on your consoles.
Full set of examples.
`ts
// Extended with scope
// console.log(gk.can(RisksAction.RISKS_CLOSE, Scope.ALL, Entity.RISKS));
// console.log(gk.can(RisksAction.RISKS_CLOSE, Scope.OWN, Entity.RISKS));
// Extended without scope
// console.log(gk.can(RisksAction.RISKS_ESCALATE));
// Entity with scope
// console.log(gk.can(Action.VIEW, Scope.ALL, Entity.RISKS));
// console.log(gk.can(Action.VIEW, Scope.OWN, Entity.RISKS));
// Entity without scope
// console.log(gk.can(Action.VIEW, Entity.RISKS));
`
Version eg: major.minor.patch
You are now done and want to publish your changes to the component library, based on the type of change you made, you'll want to use one of these commands
Run npm run publish:patch when you make backwards compatible bug fixes.npm run publish:minor
Run when you add functionality in a backwards compatible manner.npm run publish:major` when you make incompatible API changes.
Run
1. Test your changes from one of the apps.
2. Create a PR with your changes.
3. Once approved, you can then Publish via one of the above publish commands.
4. Once a new version of the library was created, you can now update all apps to reference the new component library version.