Skip to content

node-casbin/prisma-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

cea9dae · Nov 30, 2024

History

63 Commits
Nov 30, 2024
Jun 24, 2020
Jun 24, 2020
Nov 22, 2024
Jun 24, 2020
Jun 24, 2020
Jun 24, 2020
Jun 23, 2020
Jun 28, 2020
Jul 3, 2020
Jul 6, 2023
Nov 30, 2024
Nov 30, 2024
Jun 23, 2020

Repository files navigation

Prisma Adapter

NPM version NPM download Build Status Discord

Prisma Adapter is the Prisma adapter for Node-Casbin. With this library, Node-Casbin can load policy from Prisma supported database or save policy to it.

Based on Officially Supported Databases, the current supported databases are:

  • PostgreSQL
  • MySQL
  • SQLite
  • MongoDB

You may find other 3rd-party supported DBs in Prisma website or other places.

Installation

npm install casbin-prisma-adapter --save

Getting Started

Append the following content to your schema.prisma:

model CasbinRule {
  id    Int     @id @default(autoincrement())
  ptype String
  v0    String?
  v1    String?
  v2    String?
  v3    String?
  v4    String?
  v5    String?

  @@map("casbin_rule")
}

Create table(MySQL):

CREATE TABLE IF NOT EXISTS `casbin_rule` (
  `id` int NOT NULL AUTO_INCREMENT,
  `ptype` varchar(255) DEFAULT NULL,
  `v0` varchar(255) DEFAULT NULL,
  `v1` varchar(255) DEFAULT NULL,
  `v2` varchar(255) DEFAULT NULL,
  `v3` varchar(255) DEFAULT NULL,
  `v4` varchar(255) DEFAULT NULL,
  `v5` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

Here is a simple example:

import casbin from 'casbin';
import { PrismaAdapter } from 'casbin-prisma-adapter';

async function main() {
  const a = await PrismaAdapter.newAdapter();
  const e = await casbin.newEnforcer('examples/rbac_model.conf', a);

  // Check the permission.
  e.enforce('alice', 'data1', 'read');

  // Modify the policy.
  // await e.addPolicy(...);
  // await e.removePolicy(...);

  // Save the policy back to DB.
  await e.savePolicy();
}

main();

Getting Help

License

This project is under Apache 2.0 License. See the LICENSE file for the full license text.