21 releases (1 stable)
1.0.0 | Feb 1, 2024 |
---|---|
0.9.0 | Jan 31, 2021 |
0.8.3 | Dec 25, 2020 |
0.8.1 | Sep 27, 2020 |
0.3.1 | Mar 27, 2020 |
#808 in Database interfaces
24 downloads per month
39KB
942 lines
Diesel Adapter for Casbin-RS (Rust)
Diesel Adapter is the Diesel adapter for Casbin-rs. With this library, Casbin can load policy from Diesel supported database or save policy to it.
Based on Diesel, The current supported databases are:
Attention: postgres
, mysql
, sqlite
are mutual exclusive which means that you can only activate one of them.
Notice
In order to unify the database table name in Casbin ecosystem, we decide to use casbin_rule
instead of casbin_rules
from version 0.9.0
. If you are using old version diesel-adapter
in your production environment, please use following command and update diesel-adapter
version:
# MySQL & PostgreSQL & SQLite
ALTER TABLE casbin_rules RENAME TO casbin_rule;
Install
Add it to Cargo.toml
diesel-adapter = { version = "0.9.0", features = ["postgres"] }
tokio = { version = "1.1.1", features = ["macros", "rt-multi-thread"] }
Warning: tokio v1.0
or later is supported from diesel-adapter v0.9.0
, we recommend that you upgrade the relevant components to ensure that they work properly. The last version that supports tokio v0.2
is diesel-adapter v0.8.3
, you can choose according to your needs.
Configure
Configure env
Rename sample.env
to .env
and put DATABASE_URL
, POOL_SIZE
inside
DATABASE_URL=postgres://casbin_rs:casbin_rs@localhost:5432/casbin
# DATABASE_URL=mysql://casbin_rs:casbin_rs@localhost:3306/casbin
# DATABASE_URL=casbin.db
POOL_SIZE=8
Or you can export DATABASE_URL
, POOL_SIZE
export DATABASE_URL=postgres://casbin_rs:casbin_rs@localhost:5432/casbin
export POOL_SIZE=8
Example
use diesel_adapter::casbin::prelude::*;
use diesel_adapter::DieselAdapter;
#[tokio::main]
async fn main() -> Result<()> {
let mut m = DefaultModel::from_file("examples/rbac_model.conf").await?;
let a = DieselAdapter::new("postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin", 8)?;
let mut e = Enforcer::new(m, a).await?;
Ok(())
}
Dependencies
~32–47MB
~794K SLoC