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: fn(_: ImmutableString, _: ImmutableString) -> bool )
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 !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