pub struct Enforcer { /* private fields */ }
Expand description
Enforcer is the main interface for authorization enforcement and policy management.
Trait Implementations§
Source§impl CoreApi for Enforcer
impl CoreApi for Enforcer
Source§fn enforce<ARGS: EnforceArgs>(&self, rvals: ARGS) -> Result<bool>
fn enforce<ARGS: EnforceArgs>(&self, rvals: ARGS) -> Result<bool>
Enforce decides whether a “subject” can access a “object” with the operation “action”, input parameters are usually: (sub, obj, act).
§Examples
use casbin::prelude::*;
#[cfg(feature = "runtime-async-std")]
#[async_std::main]
async fn main() -> Result<()> {
let mut e = Enforcer::new("examples/basic_model.conf", "examples/basic_policy.csv").await?;
assert_eq!(true, e.enforce(("alice", "data1", "read"))?);
Ok(())
}
#[cfg(feature = "runtime-tokio")]
#[tokio::main]
async fn main() -> Result<()> {
let mut e = Enforcer::new("examples/basic_model.conf", "examples/basic_policy.csv").await?;
assert_eq!(true, e.enforce(("alice", "data1", "read"))?);
Ok(())
}
#[cfg(all(not(feature = "runtime-async-std"), not(feature = "runtime-tokio")))]
fn main() {}
Source§fn enforce_with_context<ARGS: EnforceArgs>(
&self,
ctx: EnforceContext,
rvals: ARGS,
) -> Result<bool>
fn enforce_with_context<ARGS: EnforceArgs>( &self, ctx: EnforceContext, rvals: ARGS, ) -> Result<bool>
Enforce decides whether a “subject” can access a “object” with the operation “action”, input parameters are usually: (sub, obj, act). this function will add suffix to each model eg. r2, p2, e2, m2, g2,
§Examples
use casbin::prelude::*;
use casbin::EnforceContext;
#[cfg(feature = "runtime-async-std")]
#[async_std::main]
async fn main() -> Result<()> {
let mut e = Enforcer::new("examples/multi_section_model.conf", "examples/multi_section_policy.csv").await?;
assert_eq!(true, e.enforce(("alice", "read", "project1"))?);
let ctx = EnforceContext::new("2");
assert_eq!(true, e.enforce_with_context(ctx, ("james", "execute"))?);
Ok(())
}
#[cfg(feature = "runtime-tokio")]
#[tokio::main]
async fn main() -> Result<()> {
let mut e = Enforcer::new("examples/multi_section_model.conf", "examples/multi_section_policy.csv").await?;
assert_eq!(true, e.enforce(("alice", "read", "project1"))?);
let ctx = EnforceContext::new("2");
assert_eq!(true, e.enforce_with_context(ctx, ("james", "execute"))?);
Ok(())
}
#[cfg(all(not(feature = "runtime-async-std"), not(feature = "runtime-tokio")))]
fn main() {}
fn new_raw<'async_trait, M, A>(
m: M,
a: A,
) -> Pin<Box<dyn Future<Output = Result<Self>> + Send + 'async_trait>>where
M: 'async_trait + TryIntoModel,
A: 'async_trait + TryIntoAdapter,
Self: 'async_trait,
fn new<'async_trait, M, A>(
m: M,
a: A,
) -> Pin<Box<dyn Future<Output = Result<Self>> + Send + 'async_trait>>where
M: 'async_trait + TryIntoModel,
A: 'async_trait + TryIntoAdapter,
Self: 'async_trait,
fn add_function(&mut self, fname: &str, f: OperatorFunction)
fn get_model(&self) -> &dyn Model
fn get_mut_model(&mut self) -> &mut dyn Model
fn get_adapter(&self) -> &dyn Adapter
fn get_mut_adapter(&mut self) -> &mut dyn Adapter
fn get_role_manager(&self) -> Arc<RwLock<dyn RoleManager>>
fn set_role_manager(&mut self, rm: Arc<RwLock<dyn RoleManager>>) -> Result<()>
fn set_model<'life0, 'async_trait, M>(
&'life0 mut self,
m: M,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
M: 'async_trait + TryIntoModel,
Self: 'async_trait,
'life0: 'async_trait,
fn set_adapter<'life0, 'async_trait, A>(
&'life0 mut self,
a: A,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
A: 'async_trait + TryIntoAdapter,
Self: 'async_trait,
'life0: 'async_trait,
fn set_effector(&mut self, e: Box<dyn Effector>)
fn enforce_mut<ARGS: EnforceArgs>(&mut self, rvals: ARGS) -> Result<bool>
fn build_role_links(&mut self) -> Result<()>
fn build_incremental_role_links(&mut self, d: EventData) -> Result<()>
fn load_policy<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_filtered_policy<'a, 'life0, 'async_trait>(
&'life0 mut self,
f: Filter<'a>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
fn is_filtered(&self) -> bool
fn is_enabled(&self) -> bool
fn save_policy<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn clear_policy<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn enable_enforce(&mut self, enabled: bool)
fn enable_auto_save(&mut self, auto_save: bool)
fn enable_auto_build_role_links(&mut self, auto_build_role_links: bool)
fn has_auto_save_enabled(&self) -> bool
fn has_auto_build_role_links_enabled(&self) -> bool
Auto Trait Implementations§
impl !Freeze for Enforcer
impl !RefUnwindSafe for Enforcer
impl Send for Enforcer
impl Sync for Enforcer
impl Unpin for Enforcer
impl !UnwindSafe for Enforcer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more