alsocan

1.0.2 • Public • Published

AlsoCan is an authorization library. It's a replacement for CanCan with additonal features:

Features:

  • Export all permissions of a given user to load them up on the front end
  • Support for explicity deny
  • Rich debugging output to show exactly why an action was allowed or denied
  • Wildcard actions
  • Zero dependencies

Usage

npm install alsocan
const AlsoCan = require('./alsoCan');

const alsoCan = new AlsoCan({
	targetCompare: (instance, model) => instance instanceof model,
	userCompare: (user, role) => user.role === role,
    // Will print debug info to the console if truthy
	debug: process.env.DEBUG_AUTHORIZATION,
	defaultUser: user => user || { name: 'general public', permission: 'public' }
});

class Posts {};
const isSameOrg = (user, target, ctx, action) => user.organisationId === target.organisationId;
const isOwner = (user, target, ctx, action) => user.id === target.userId;

allow('ADMIN', ['manage'], Posts, isSameOrg);
allow('USER', ['edit*'], Posts, isOwner);

// Authorize access to a record, throws if not allowed
alsoCan.authorize(user, 'edit', record, ctx);
// Returns true if the user can perform the action
const can = alsoCan.can(user, 'edit', record, ctx);

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.2
    12
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.2
    12
  • 1.0.1
    24
  • 1.0.0
    1

Package Sidebar

Install

npm i alsocan

Weekly Downloads

37

Version

1.0.2

License

noharm

Unpacked Size

14 kB

Total Files

4

Last publish

Collaborators

  • raiselyengineering