pub struct AccessControl {
role_permissions: HashMap<Role, HashSet<Permission>>,
}Expand description
Access control manager for checking role permissions.
Fields§
§role_permissions: HashMap<Role, HashSet<Permission>>Mapping of roles to their permissions.
Implementations§
Source§impl AccessControl
impl AccessControl
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new access control instance with default role-permission mappings.
Sourcepub fn has_permission(&self, role: &Role, permission: &Permission) -> bool
pub fn has_permission(&self, role: &Role, permission: &Permission) -> bool
Checks if a role has a specific permission.
Sourcepub fn check_access(&self, role: &Role, permission: &Permission) -> AccessResult
pub fn check_access(&self, role: &Role, permission: &Permission) -> AccessResult
Checks access and returns a detailed result.
Sourcepub fn permissions_for(&self, role: &Role) -> HashSet<Permission>
pub fn permissions_for(&self, role: &Role) -> HashSet<Permission>
Returns all permissions for a role.
Sourcepub fn roles_with_permission(&self, permission: &Permission) -> Vec<Role>
pub fn roles_with_permission(&self, permission: &Permission) -> Vec<Role>
Returns all roles that have a specific permission.
Sourcepub fn grant_permission(&mut self, role: &Role, permission: Permission)
pub fn grant_permission(&mut self, role: &Role, permission: Permission)
Adds a custom permission to a role.
Sourcepub fn revoke_permission(&mut self, role: &Role, permission: &Permission)
pub fn revoke_permission(&mut self, role: &Role, permission: &Permission)
Removes a permission from a role.
Sourcepub fn summary(&self) -> RbacSummary
pub fn summary(&self) -> RbacSummary
Returns a summary of all role-permission mappings.
Trait Implementations§
Source§impl Clone for AccessControl
impl Clone for AccessControl
Source§fn clone(&self) -> AccessControl
fn clone(&self) -> AccessControl
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for AccessControl
impl Debug for AccessControl
Auto Trait Implementations§
impl Freeze for AccessControl
impl RefUnwindSafe for AccessControl
impl Send for AccessControl
impl Sync for AccessControl
impl Unpin for AccessControl
impl UnwindSafe for AccessControl
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
Converts
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>
Converts
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].