1.1.1 • Published 6 months ago

casbin-drizzle-adapter v1.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

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.