Casbin intergration for actix framework
Add it to Cargo.toml
actix-casbin = "0.2.0"
actix-rt = "1.1.1"
use actix_casbin::casbin::{DefaultModel, FileAdapter, Result};
use actix_casbin::{CasbinActor, CasbinCmd, CasbinResult};
#[actix_rt::main]
async fn main() -> Result<()> {
let m = DefaultModel::from_file("examples/rbac_model.conf").await?;
let a = FileAdapter::new("examples/rbac_policy.csv");
let addr = CasbinActor::new(m, a).await?;
let res = addr
.send(CasbinCmd::Enforce(
vec!["alice", "data1", "read"]
.iter()
.map(|s| (*s).to_string())
.collect(),
))
.await;
let test_enforce = match res {
Ok(Ok(CasbinResult::Enforce(result))) => result,
_ => panic!("Actor Error"),
};
if test_enforce {
println!("Enforce Pass");
} else {
println!("Enforce Fail");
}
Ok(())
}
This project is licensed under
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)