
Product
Introducing Tier 1 Reachability: Precision CVE Triage for Enterprise Teams
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
casbin-pg-adapter
Advanced tools
PostgreSQL native adapter for Node-Casbin with advanced filter capability and improved performance.
PostgreSQL native adapter for Node-Casbin. With this library, Node-Casbin can load policy from PosgreSQL database or save policy to it. It supports loading filtered policies and is built for improving performances in PostgreSQL. It uses node-postgres to connect to PostgreSQL.
casbin-pg-adapter
also adds advanced filtering capability. You can filter using LIKE
or regexp
expressions when using loadFilteredPolicy
.
npm install casbin-pg-adapter
import { newEnforcer } from "casbin";
import PostgresAdapter from "casbin-pg-adapter";
async function myFunction() {
// Initialize a Postgres adapter and use it in a Node-Casbin enforcer:
// The adapter can not automatically create database.
// But the adapter will automatically and use the table named "casbin_rule".
// I think ORM should not automatically create databases.
const a = await PostgresAdapter.newAdapter({
connectionString: "postgresql://casbin:casbin@localhost:5432/casbin"
});
const e = await newEnforcer("examples/rbac_model.conf", a);
// Load the policy from DB.
await e.loadPolicy();
// 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();
}
import { newEnforcer } from "casbin";
import PostgresAdapter from "casbin-pg-adapter";
async function myFunction() {
const a = await PostgresAdapter.newAdapter({
connectionString: "postgresql://casbin:casbin@localhost:5432/casbin"
});
const e = await newEnforcer("examples/rbac_model.conf", a);
// Load the filtered policy from DB.
await e.loadFilteredPolicy({
p: ["alice"],
g: ["", "role:admin"]
});
// Check the permission.
e.enforce("alice", "data1", "read");
}
import { newEnforcer } from "casbin";
import PostgresAdapter from "casbin-pg-adapter";
async function myFunction() {
const a = await PostgresAdapter.newAdapter({
connectionString: "postgresql://casbin:casbin@localhost:5432/casbin"
});
const e = await newEnforcer("examples/rbac_model.conf", a);
// Load the filtered policy from DB.
await e.loadFilteredPolicy({
p: ["regex:(role:.*)|(alice)"],
g: ["", "like:role:%"]
});
// Check the permission.
e.enforce("alice", "data1", "read");
}
You can pass any node-postgres options to the Adapter.
See node-postgres
documentation: Connecting to PostgreSQL.
Additionnally, you can pass the following option to the Adapter:
migrate
(Boolean): If set to false
, the Adapter will not apply migration when starting.Note: If you use this parameter, you should apply migration manually:
async function startup(): Promise<void> {
PostgresAdapter.migrate({
connectionString: "postgresql://casbin:casbin@localhost:5432/casbin"
});
}
async function createEnforcer(): Promise<Enforcer> {
const a = await PostgresAdapter.newAdapter({
connectionString: "postgresql://casbin:casbin@localhost:5432/casbin",
migrate: false
});
return newEnforcer("examples/rbac_model.conf", a);
}
If you want to use the savePolicy
feature from node-casbin
, you have to disable the filtered behavior of PostgresAdapter
.
You can do it by calling enableFiltered
on the adapter:
a.enableFiltered(false);
This project is under MIT License. See the LICENSE file for the full license text.
FAQs
PostgreSQL native adapter for Node-Casbin with advanced filter capability and improved performance.
The npm package casbin-pg-adapter receives a total of 2,615 weekly downloads. As such, casbin-pg-adapter popularity was classified as popular.
We found that casbin-pg-adapter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.
Security News
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.