Struct PolicyEvaluator
pub struct PolicyEvaluator {
policy: RbacPolicy,
cache: RwLock<RawRwLock, HashMap<(String, String), bool>>,
cache_ttl: Duration,
}Expand description
RBAC policy evaluator.
Fields§
§policy: RbacPolicy§cache: RwLock<RawRwLock, HashMap<(String, String), bool>>§cache_ttl: DurationImplementations§
§impl PolicyEvaluator
impl PolicyEvaluator
pub fn new(policy: RbacPolicy) -> PolicyEvaluator
pub fn new(policy: RbacPolicy) -> PolicyEvaluator
Create a new policy evaluator.
pub fn with_cache_ttl(self, ttl: Duration) -> PolicyEvaluator
pub fn with_cache_ttl(self, ttl: Duration) -> PolicyEvaluator
Set cache TTL.
pub fn clear_cache(&self)
pub fn clear_cache(&self)
Clear the evaluation cache.
pub fn is_allowed(&self, subject: &Subject, permission: Permission) -> bool
pub fn is_allowed(&self, subject: &Subject, permission: Permission) -> bool
Check if subject has a permission.
pub fn can_access(
&self,
subject: &Subject,
resource: &str,
permission: Permission,
) -> Result<(), RbacError>
pub fn can_access( &self, subject: &Subject, resource: &str, permission: Permission, ) -> Result<(), RbacError>
Check if subject can access a resource.
pub fn can_access_kernel(
&self,
subject: &Subject,
kernel_id: &KernelId,
permission: Permission,
) -> Result<(), RbacError>
pub fn can_access_kernel( &self, subject: &Subject, kernel_id: &KernelId, permission: Permission, ) -> Result<(), RbacError>
Check kernel access.
pub fn get_permissions(&self, subject: &Subject) -> HashSet<Permission>
pub fn get_permissions(&self, subject: &Subject) -> HashSet<Permission>
Get all permissions for a subject.
Auto Trait Implementations§
impl !Freeze for PolicyEvaluator
impl !RefUnwindSafe for PolicyEvaluator
impl Send for PolicyEvaluator
impl Sync for PolicyEvaluator
impl Unpin for PolicyEvaluator
impl UnwindSafe for PolicyEvaluator
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
§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> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.