casbin-drizzle-adapter
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

Drizzle Adapter

This Adapter is based on Prisma Adapter

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

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

  • PostgreSQL
  • MySQL
  • SQLite

Installation

pnpm add casbin-drizzle-adapter

Getting Started

Create table(PostgreSQL):

import { pgTable, serial, varchar } from "drizzle-orm/pg-core"

-- Must be named casbinTable
export const casbinTable = pgTable("casbin_rule", {
    id: serial("id").primaryKey().notNull(),
    ptype: varchar("ptype", { length: 254 }),
    v0: varchar("v0", { length: 254 }),
    v1: varchar("v1", { length: 254 }),
    v2: varchar("v2", { length: 254 }),
    v3: varchar("v3", { length: 254 }),
    v4: varchar("v4", { length: 254 }),
    v5: varchar("v5", { length: 254 }),
})

Here is a simple example with PostgreSQL:

import casbin from "casbin"
import { DrizzleAdapter } from "casbin-drizzle-adapter"
import { Pool } from "pg"
import { drizzle } from "drizzle-orm/node-postgres"
import { casbinTable } from "./your-table-schema"

async function main() {
    const pool = new Pool({
        connectionString: process.env.DATABASE_URL,
    })
    const d = drizzle(pool, {
        schema: {
            casbinTable,
        },
    })

    const a = await DrizzleAdapter.newAdapter(d, casbinTable)
    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 MIT. See the LICENSE file for the full license text.

Package Sidebar

Install

npm i casbin-drizzle-adapter

Weekly Downloads

9

Version

1.1.1

License

MIT

Unpacked Size

11.8 kB

Total Files

7

Last publish

Collaborators

  • hngngn