https://github.com/knex/casbin-knex-adapter
Knex adapter for Casbin
https://github.com/knex/casbin-knex-adapter
authorization casbin casbin-adapter
Last synced: about 1 year ago
JSON representation
Knex adapter for Casbin
- Host: GitHub
- URL: https://github.com/knex/casbin-knex-adapter
- Owner: knex
- License: apache-2.0
- Created: 2019-04-14T20:21:30.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-05-29T14:47:57.000Z (about 3 years ago)
- Last Synced: 2024-05-13T16:23:54.791Z (about 2 years ago)
- Topics: authorization, casbin, casbin-adapter
- Language: TypeScript
- Homepage: https://github.com/casbin/node-casbin
- Size: 69.3 KB
- Stars: 16
- Watchers: 3
- Forks: 8
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Knex Adapter
[![NPM Version][npm-image]][npm-url]

[](https://coveralls.io/r/knex/casbin-knex-adapter?branch=master)
[Knex](https://github.com/knex/knex) Adapter for [Node-Casbin](https://github.com/casbin/node-casbin). Use this library for [policy storage](https://casbin.org/docs/en/adapters) in Casbin.
For full database support list, go to the Knex [documentation](https://knexjs.org/#Installation-node).
## Installation
`npm install casbin-knex-adapter --save`
or
`yarn add casbin-knex-adapter`
## Example
```js
const Knex = require('knex')
const casbin = require('casbin');
const KnexAdapter = require('casbin-knex-adapter');
(async function() {
// Instantiate DB connection
const knex = Knex(knexOptions)
// Create adapter
const adapter = await KnexAdapter.newAdapter({ knex });
// Create casbin enforcer
const enforcer = await casbin.newEnforcer('model.conf', adapter);
// Load policy from DB
await enforcer.loadPolicy();
// Check permission
if (await enforcer.enforce('user', 'resource', 'read')) {
// Do something if user is authorized
}
// Modify policy
// await enforcer.addPolicy(...)
// await enforcer.removePolicy(...)
// await adapter.removePolicyWhere({ 'v0': '00001' }) // needs to be reloaded from enforcer afterwards
// Rewrite entire policy in DB
await enforcer.savePolicy();
})();
```
[npm-image]: https://img.shields.io/npm/v/casbin-knex-adapter.svg
[npm-url]: https://npmjs.org/package/casbin-knex-adapter