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 UnsafeUnpin 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.