5.38.0 • Published 6 months ago

casbin v5.38.0

Weekly downloads
17,697
License
Apache-2.0
Repository
github
Last release
6 months ago

Node-Casbin

NPM version NPM download install size codebeat badge GitHub Actions Coverage Status Release Discord

šŸ’– Looking for an open-source identity and access management solution like Okta, Auth0, Keycloak ? Learn more about: Casdoor

News: still worry about how to write the correct node-casbin policy? Casbin online editor is coming to help!

casbin Logo

node-casbin is a powerful and efficient open-source access control library for Node.JS projects. It provides support for enforcing authorization based on various access control models.

All the languages supported by Casbin:

golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
production-readyproduction-readyproduction-readyproduction-ready
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
production-readyproduction-readybeta-testproduction-ready

Documentation

https://casbin.org/docs/overview

Installation

# NPM
npm install casbin --save

# Yarn
yarn add casbin

Get started

New a node-casbin enforcer with a model file and a policy file, see Model section for details:

// For Node.js:
const { newEnforcer } = require('casbin');
// For browser:
// import { newEnforcer } from 'casbin';

const enforcer = await newEnforcer('basic_model.conf', 'basic_policy.csv');

Note: you can also initialize an enforcer with policy in DB instead of file, see Persistence section for details.

Add an enforcement hook into your code right before the access happens:

const sub = 'alice'; // the user that wants to access a resource.
const obj = 'data1'; // the resource that is going to be accessed.
const act = 'read'; // the operation that the user performs on the resource.

// Async:
const res = await enforcer.enforce(sub, obj, act);
// Sync:
// const res = enforcer.enforceSync(sub, obj, act);

if (res) {
  // permit alice to read data1
} else {
  // deny the request, show an error
}

Besides the static policy file, node-casbin also provides API for permission management at run-time. For example, You can get all the roles assigned to a user as below:

const roles = await enforcer.getRolesForUser('alice');

See Policy management APIs for more usage.

Policy management

Casbin provides two sets of APIs to manage permissions:

  • Management API: the primitive API that provides full support for Casbin policy management.
  • RBAC API: a more friendly API for RBAC. This API is a subset of Management API. The RBAC users could use this API to simplify the code.

Official Model

https://casbin.org/docs/supported-models

Policy persistence

https://casbin.org/docs/adapters

Policy consistence between multiple nodes

https://casbin.org/docs/watchers

Role manager

https://casbin.org/docs/role-managers

Contributors

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers! šŸ™ [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

License

This project is licensed under the Apache 2.0 license.

Contact

If you have any issues or feature requests, please contact us. PR is welcomed.

vue-casbinpapiea-engineidentity-ws@codeloop/authorization-casbin@picker-cc/core@compassdigital/core@infinitebrahmanuniverse/nolb-casb@everything-registry/sub-chunk-1297wired-egg@bpfaas/middleware-auth@tanphat199/lb-infrajs-mongoose-adapteriris-eggwrapper-routenestjs-casbin-moduletypeorm-adaptertorn-koa-authz@aipeli/midway-casbin@anthrax63/typeorm-adapter@aeroline_1025/otzi@beamnetwork/eco-casbin-mongoose-adapter@beamnetwork/eco-nest-authz@bleco/authorization@bleco/core@bloom-housing/backend-core@bonio-tw/casbin-adapter@deboxsoft/users-api@deboxsoft/users-server@fastify-dev-toolkit/backend@ecogy-energy/ecogy-utils@loopx/core@loopeco/authorization-casbin@loopback/example-access-control-migration@maxbuild/middleware-auth@mechsoft/common@mechsoft/enforcer@mechsoft/prisma-client@microloop/core@movenium/jsonapi-mongodb@navch/nest-auth@ninja-1/koa-authz@ninja-1/typeorm-adapter@elastic.io/casbin-mongoose-adapter@minimaltech/node-infra@midwayjs/casbin@ispm/common@janus-idp/backstage-plugin-rbac-backend@knotel/authorize@hypto/hypto_iam1@hypto/iam@rytass/member-base-nestjs-module@reinaldooli/nest-casbin@reinaldooli/typeorm-adapter@onichandame/mongoose-adapter@pickerjs/core@originforest/middleware-auth@pardjs/nest-casbinmy-typescript-library-rahul52usmongodb-casbin-adaptermikro-orm-adaptermidway-typeorm-casbinreact-authznexis-lb4-authorizationnest-casbinnest-authznestjs-casbinnestjs-casbin-mongonestjs-casbin-mongodbplaycasbinglobal-user-managegraphql-authzlight-coreloopback4-authorization@tzuhua/casbin-adapter@ubax/authorization-service@togai/iam@treenity/repository@viron/lib@zalastax/nolb-casb@zakariaelfakhry/typeorm-adapter@zcong/koa-casbin@zcong/egg-casbinacl-nestadditional-helperscasbinjs-server-toolcasequelizecasbin-mikroorm-adaptercasbin-mongodb-adapter-for-npmcasbin-mongoosecasbin-authorizationcasbin-couchbase-adaptercasbin-dynamodb-adaptercasbin-dynamodb-adapter-v3casbin-jwt-expresscasbin-pg-adapterbleco-authorizationegg-zroleerin@sphereon/ssi-sdk.w3c-vc-api@sphereon/ssi-sdk.public-key-hosting
5.38.0

6 months ago

5.37.0

6 months ago

5.35.0

8 months ago

5.36.0

8 months ago

5.34.0

8 months ago

5.32.0

9 months ago

5.31.0

10 months ago

5.30.0

1 year ago

5.29.0

1 year ago

5.27.1

2 years ago

5.27.0

2 years ago

5.28.0

2 years ago

5.26.2

2 years ago

5.24.4

2 years ago

5.25.0

2 years ago

5.26.1

2 years ago

5.26.0

2 years ago

5.24.3

2 years ago

5.24.2

2 years ago

5.24.1

2 years ago

5.24.0

2 years ago

5.23.2

2 years ago

5.23.1

2 years ago

5.23.0

2 years ago

5.20.4

2 years ago

5.20.3

3 years ago

5.20.2

3 years ago

5.20.1

3 years ago

5.20.0

3 years ago

5.21.0

2 years ago

5.22.0

2 years ago

5.19.3

3 years ago

5.19.2

3 years ago

5.19.1

3 years ago

5.18.0

3 years ago

5.19.0

3 years ago

5.16.0

3 years ago

5.17.0

3 years ago

5.15.2

3 years ago

5.15.0

3 years ago

5.14.0-beta.4

3 years ago

5.15.1

3 years ago

5.14.0-beta.3

3 years ago

5.14.0-beta.2

3 years ago

5.14.0

3 years ago

5.14.0-beta.1

3 years ago

5.13.2

3 years ago

5.13.1

3 years ago

5.13.0

3 years ago

5.12.0

3 years ago

5.11.5

4 years ago

5.11.4

4 years ago

5.11.3

4 years ago

5.11.2

4 years ago

5.11.1

4 years ago

5.11.0

4 years ago

5.10.0

4 years ago

5.9.1

4 years ago

5.9.0

4 years ago

5.8.0

4 years ago

5.7.2

4 years ago

5.7.1

4 years ago

5.7.0

4 years ago

5.6.3

4 years ago

5.6.2

4 years ago

5.6.1

4 years ago

5.6.0

4 years ago

5.5.0

4 years ago

5.4.2

4 years ago

5.4.1

4 years ago

5.4.0

4 years ago

5.3.1

4 years ago

5.2.3

5 years ago

5.2.2

5 years ago

5.2.1

5 years ago

5.2.0

5 years ago

5.1.6

5 years ago

5.1.5

5 years ago

5.1.4

5 years ago

5.1.3

5 years ago

5.1.2

5 years ago

5.1.1

5 years ago

5.1.0

5 years ago

5.0.7

5 years ago

5.0.6

5 years ago

5.0.5

5 years ago

5.0.4

5 years ago

5.0.3

5 years ago

5.0.2

5 years ago

5.0.1

5 years ago

5.0.0

5 years ago

4.7.2

5 years ago

4.7.1

5 years ago

4.7.0

5 years ago

4.6.0

5 years ago

4.5.0

5 years ago

4.5.0-0

5 years ago

4.4.0

5 years ago

4.3.1

5 years ago

4.3.0

5 years ago

4.2.1

5 years ago

4.2.0

5 years ago

4.1.1

5 years ago

4.1.0

5 years ago

4.0.0

5 years ago

3.1.0

5 years ago

3.0.9

6 years ago

3.0.8

6 years ago

3.0.7

6 years ago

3.0.6

6 years ago

3.0.5

6 years ago

3.0.4

6 years ago

3.0.3

6 years ago

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.0.4

6 years ago

3.0.0-beta.1

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

7 years ago

1.1.9

7 years ago

1.1.8

7 years ago

1.1.7

7 years ago

1.1.6

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.9

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago