pub struct PermissionChecker { /* private fields */ }
Expand description
Permission checker for validating access rights.
Implementations§
Source§impl PermissionChecker
impl PermissionChecker
Sourcepub fn check_advanced_permission(
&self,
user_id: &str,
permission: &Permission,
user_attributes: &HashMap<String, Value>,
abac_policy: Option<&AbacPolicy>,
delegations: Option<&[Delegation]>,
role_resolver: &dyn Fn(&str) -> Option<Role>,
) -> bool
pub fn check_advanced_permission( &self, user_id: &str, permission: &Permission, user_attributes: &HashMap<String, Value>, abac_policy: Option<&AbacPolicy>, delegations: Option<&[Delegation]>, role_resolver: &dyn Fn(&str) -> Option<Role>, ) -> bool
Check permission for a user with ABAC and delegation support.
Sourcepub fn check_abac(
&self,
user_attributes: &HashMap<String, Value>,
permission: &Permission,
abac_policy: &AbacPolicy,
) -> bool
pub fn check_abac( &self, user_attributes: &HashMap<String, Value>, permission: &Permission, abac_policy: &AbacPolicy, ) -> bool
Check permission with ABAC policy
Sourcepub fn check_delegation(
&self,
user_id: &str,
permission: &Permission,
delegations: &[Delegation],
) -> bool
pub fn check_delegation( &self, user_id: &str, permission: &Permission, delegations: &[Delegation], ) -> bool
Check permission with delegation
Source§impl PermissionChecker
impl PermissionChecker
Sourcepub fn remove_role(&mut self, role_name: &str)
pub fn remove_role(&mut self, role_name: &str)
Remove a role definition.
Sourcepub fn set_user_permissions(&mut self, user_permissions: UserPermissions)
pub fn set_user_permissions(&mut self, user_permissions: UserPermissions)
Set user permissions.
Sourcepub fn get_user_permissions(&self, user_id: &str) -> Option<&UserPermissions>
pub fn get_user_permissions(&self, user_id: &str) -> Option<&UserPermissions>
Get user permissions.
Sourcepub fn get_user_permissions_mut(
&mut self,
user_id: &str,
) -> Option<&mut UserPermissions>
pub fn get_user_permissions_mut( &mut self, user_id: &str, ) -> Option<&mut UserPermissions>
Get mutable user permissions.
Sourcepub fn add_user_permission(&mut self, user_id: &str, permission: Permission)
pub fn add_user_permission(&mut self, user_id: &str, permission: Permission)
Add a permission to a user.
Sourcepub fn add_user_role(&mut self, user_id: &str, role: impl Into<String>)
pub fn add_user_role(&mut self, user_id: &str, role: impl Into<String>)
Add a role to a user.
Sourcepub fn check_permission(
&mut self,
user_id: &str,
permission: &Permission,
) -> Result<bool>
pub fn check_permission( &mut self, user_id: &str, permission: &Permission, ) -> Result<bool>
Check if a user has a specific permission.
Sourcepub fn check_access(
&mut self,
user_id: &str,
action: &str,
resource: &str,
) -> Result<bool>
pub fn check_access( &mut self, user_id: &str, action: &str, resource: &str, ) -> Result<bool>
Check if a user has permission for a specific action on a resource.
Sourcepub fn check_instance_access(
&mut self,
user_id: &str,
action: &str,
resource: &str,
instance: &str,
) -> Result<bool>
pub fn check_instance_access( &mut self, user_id: &str, action: &str, resource: &str, instance: &str, ) -> Result<bool>
Check if a user has permission for a specific action on a resource instance.
Sourcepub fn check_token_permission(
&mut self,
token: &AuthToken,
permission: &Permission,
) -> Result<bool>
pub fn check_token_permission( &mut self, token: &AuthToken, permission: &Permission, ) -> Result<bool>
Check permission from an auth token.
Sourcepub fn add_resource_hierarchy(&mut self, parent: String, children: Vec<String>)
pub fn add_resource_hierarchy(&mut self, parent: String, children: Vec<String>)
Add resource hierarchy relationship
Sourcepub fn get_child_resources(&self, parent: &str) -> Option<&Vec<String>>
pub fn get_child_resources(&self, parent: &str) -> Option<&Vec<String>>
Get child resources for a parent resource
Sourcepub fn check_hierarchical_permission(
&mut self,
user_id: &str,
action: &str,
resource: &str,
) -> Result<bool>
pub fn check_hierarchical_permission( &mut self, user_id: &str, action: &str, resource: &str, ) -> Result<bool>
Check hierarchical permission - if user has permission on parent, they have it on children
Sourcepub fn create_default_roles(&mut self)
pub fn create_default_roles(&mut self)
Create some default roles for common use cases.
Sourcepub fn load_permissions(&mut self, _config: &str) -> Result<()>
pub fn load_permissions(&mut self, _config: &str) -> Result<()>
Load permissions from a configuration or database.
Sourcepub fn assign_role_to_user(
&mut self,
user_id: &str,
role_name: &str,
) -> Result<()>
pub fn assign_role_to_user( &mut self, user_id: &str, role_name: &str, ) -> Result<()>
Assign a role to a user.
Sourcepub fn set_role_inheritance(
&mut self,
child_role: &str,
parent_role: &str,
) -> Result<()>
pub fn set_role_inheritance( &mut self, child_role: &str, parent_role: &str, ) -> Result<()>
Set role inheritance relationship.
Sourcepub fn remove_user_permission(&mut self, user_id: &str, permission: &Permission)
pub fn remove_user_permission(&mut self, user_id: &str, permission: &Permission)
Remove a permission from a user.
Sourcepub fn user_has_role(&self, user_id: &str, role_name: &str) -> bool
pub fn user_has_role(&self, user_id: &str, role_name: &str) -> bool
Check if a user has a specific role.
Sourcepub fn get_effective_permissions(&self, user_id: &str) -> Vec<String>
pub fn get_effective_permissions(&self, user_id: &str) -> Vec<String>
Get effective permissions for a user (including role-based permissions).
Trait Implementations§
Source§impl Clone for PermissionChecker
impl Clone for PermissionChecker
Source§fn clone(&self) -> PermissionChecker
fn clone(&self) -> PermissionChecker
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for PermissionChecker
impl Debug for PermissionChecker
Auto Trait Implementations§
impl Freeze for PermissionChecker
impl RefUnwindSafe for PermissionChecker
impl Send for PermissionChecker
impl Sync for PermissionChecker
impl Unpin for PermissionChecker
impl UnwindSafe for PermissionChecker
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more