pub struct AbacRole {
pub id: String,
pub name: String,
pub description: String,
pub permissions: HashSet<AbacPermission>,
pub parent_roles: HashSet<String>,
pub metadata: HashMap<String, String>,
pub created_at: SystemTime,
pub updated_at: SystemTime,
}Expand description
An AbacRole groups permissions and can be assigned to users
Fields§
§id: StringUnique AbacRole identifier
name: StringHuman-readable AbacRole name
description: StringAbacRole description
permissions: HashSet<AbacPermission>Permissions granted by this AbacRole
parent_roles: HashSet<String>Parent roles (for hierarchical RBAC)
metadata: HashMap<String, String>AbacRole metadata
created_at: SystemTimeWhen the AbacRole was created
updated_at: SystemTimeWhen the AbacRole was last modified
Implementations§
Source§impl AbacRole
impl AbacRole
Sourcepub fn add_permission(&mut self, permission: AbacPermission)
pub fn add_permission(&mut self, permission: AbacPermission)
Adds a permission to this role. Updates the updated_at timestamp.
Sourcepub fn remove_permission(&mut self, permission: &AbacPermission)
pub fn remove_permission(&mut self, permission: &AbacPermission)
Removes a permission from this role. Updates the updated_at timestamp.
Sourcepub fn add_parent_role(&mut self, role_id: impl Into<String>)
pub fn add_parent_role(&mut self, role_id: impl Into<String>)
Adds a parent role by ID, enabling permission inheritance.
Sourcepub fn has_permission(
&self,
permission: &AbacPermission,
context: &AccessContext,
) -> bool
pub fn has_permission( &self, permission: &AbacPermission, context: &AccessContext, ) -> bool
Checks whether this role grants the given permission under context.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for AbacRole
impl<'de> Deserialize<'de> for AbacRole
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for AbacRole
impl RefUnwindSafe for AbacRole
impl Send for AbacRole
impl Sync for AbacRole
impl Unpin for AbacRole
impl UnsafeUnpin for AbacRole
impl UnwindSafe for AbacRole
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
Mutably borrows from an owned value. Read more
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>
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