pub struct Role {
pub name: String,
pub description: Option<String>,
pub permissions: HashSet<Permission>,
pub parent_roles: HashSet<String>,
pub active: bool,
}
Expand description
Represents a role with associated permissions.
Fields§
§name: String
Role name
description: Option<String>
Role description
permissions: HashSet<Permission>
Permissions granted to this role
parent_roles: HashSet<String>
Parent roles this role inherits from
active: bool
Whether this role is active
Implementations§
Source§impl Role
impl Role
Sourcepub fn with_description(self, description: impl Into<String>) -> Self
pub fn with_description(self, description: impl Into<String>) -> Self
Set the role description.
Sourcepub fn add_permission(&mut self, permission: Permission)
pub fn add_permission(&mut self, permission: Permission)
Add a permission to the role.
Sourcepub fn with_permissions(self, permissions: Vec<Permission>) -> Self
pub fn with_permissions(self, permissions: Vec<Permission>) -> Self
Add multiple permissions to the role.
Sourcepub fn remove_permission(&mut self, permission: &Permission)
pub fn remove_permission(&mut self, permission: &Permission)
Remove a permission from the role.
Sourcepub fn add_parent_role(&mut self, parent_role: impl Into<String>)
pub fn add_parent_role(&mut self, parent_role: impl Into<String>)
Add a parent role.
Sourcepub fn has_permission(&self, permission: &Permission) -> bool
pub fn has_permission(&self, permission: &Permission) -> bool
Check if the role has a specific permission.
Sourcepub fn get_all_permissions(
&self,
role_resolver: &dyn Fn(&str) -> Option<Role>,
) -> HashSet<Permission>
pub fn get_all_permissions( &self, role_resolver: &dyn Fn(&str) -> Option<Role>, ) -> HashSet<Permission>
Get all permissions including inherited ones.
Sourcepub fn set_active(&mut self, active: bool)
pub fn set_active(&mut self, active: bool)
Activate or deactivate the role.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Role
impl<'de> Deserialize<'de> for Role
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 Role
impl RefUnwindSafe for Role
impl Send for Role
impl Sync for Role
impl Unpin for Role
impl UnwindSafe for Role
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