casbin/rbac/
role_manager.rs

1use crate::Result;
2
3pub type MatchingFn = fn(&str, &str) -> bool;
4
5pub trait RoleManager: Send + Sync {
6    fn clear(&mut self);
7    fn add_link(&mut self, name1: &str, name2: &str, domain: Option<&str>);
8    fn matching_fn(
9        &mut self,
10        role_matching_fn: Option<MatchingFn>,
11        domain_matching_fn: Option<MatchingFn>,
12    );
13    fn delete_link(
14        &mut self,
15        name1: &str,
16        name2: &str,
17        domain: Option<&str>,
18    ) -> Result<()>;
19    fn has_link(&self, name1: &str, name2: &str, domain: Option<&str>) -> bool;
20    fn get_roles(&self, name: &str, domain: Option<&str>) -> Vec<String>;
21    fn get_users(&self, name: &str, domain: Option<&str>) -> Vec<String>;
22}