pub enum RUserRole {
User,
Premium,
Admin,
}Expand description
User role for authorization decisions.
Defines the access level and capabilities of a user.
§Hierarchy
| Role | Premium Access | Admin Access |
|---|---|---|
User | No | No |
Premium | Yes | No |
Admin | Yes | Yes |
§Default
The default role is RUserRole::User.
§Examples
use revelation_user::RUserRole;
// Default role
let role = RUserRole::default();
assert_eq!(role, RUserRole::User);
// Check access levels
assert!(!RUserRole::User.is_premium());
assert!(RUserRole::Premium.is_premium());
assert!(RUserRole::Admin.is_premium()); // Admins have premium
assert!(RUserRole::Admin.is_admin());§Serialization
Roles serialize to lowercase snake_case:
use revelation_user::RUserRole;
assert_eq!(serde_json::to_string(&RUserRole::User).unwrap(), "\"user\"");
assert_eq!(
serde_json::to_string(&RUserRole::Premium).unwrap(),
"\"premium\""
);
assert_eq!(
serde_json::to_string(&RUserRole::Admin).unwrap(),
"\"admin\""
);Variants§
User
Regular user with basic access.
This is the default role for new users.
Premium
Premium user with access to premium features.
Includes all User capabilities plus premium content.
Admin
Administrator with full access.
Has all Premium capabilities plus admin functions.
Implementations§
Source§impl RUserRole
impl RUserRole
Sourcepub const fn is_admin(&self) -> bool
pub const fn is_admin(&self) -> bool
Check if this role has admin privileges.
Only RUserRole::Admin returns true.
§Examples
use revelation_user::RUserRole;
assert!(RUserRole::Admin.is_admin());
assert!(!RUserRole::Premium.is_admin());
assert!(!RUserRole::User.is_admin());Check if this role has premium access.
Both RUserRole::Premium and RUserRole::Admin return true.
§Examples
use revelation_user::RUserRole;
assert!(RUserRole::Admin.is_premium());
assert!(RUserRole::Premium.is_premium());
assert!(!RUserRole::User.is_premium());Sourcepub const fn is_user(&self) -> bool
pub const fn is_user(&self) -> bool
Check if this is a regular user role.
Only RUserRole::User returns true.
§Examples
use revelation_user::RUserRole;
assert!(RUserRole::User.is_user());
assert!(!RUserRole::Premium.is_user());
assert!(!RUserRole::Admin.is_user());Trait Implementations§
Source§impl<'de> Deserialize<'de> for RUserRole
impl<'de> Deserialize<'de> for RUserRole
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
Source§impl Role for RUserRole
Implementation of Role trait for permission-based access control.
impl Role for RUserRole
Implementation of Role trait for permission-based access control.
§Permission Mapping
| Role | Permissions |
|---|---|
User | READ, API_ACCESS |
Premium | READ, WRITE, API_ACCESS, PREMIUM, EXPORT |
Admin | All permissions |
§Examples
use revelation_user::{Permissions, RUserRole, Role};
let admin = RUserRole::Admin;
assert!(admin.can(Permissions::MANAGE_USERS));
assert!(admin.can_all(Permissions::all()));
let premium = RUserRole::Premium;
assert!(premium.can(Permissions::PREMIUM));
assert!(premium.can(Permissions::EXPORT));
assert!(!premium.can(Permissions::ADMIN));Source§fn permissions(&self) -> Permissions
fn permissions(&self) -> Permissions
Get the permissions associated with this role.
Source§fn can(&self, permission: Permissions) -> bool
fn can(&self, permission: Permissions) -> bool
Check if this role has the specified permission. Read more
Source§fn can_all(&self, permissions: Permissions) -> bool
fn can_all(&self, permissions: Permissions) -> bool
Check if this role has all the specified permissions. Read more
Source§fn can_any(&self, permissions: Permissions) -> bool
fn can_any(&self, permissions: Permissions) -> bool
Check if this role has any of the specified permissions. Read more
Check if this role has premium access. Read more
impl Copy for RUserRole
impl Eq for RUserRole
impl StructuralPartialEq for RUserRole
Auto Trait Implementations§
impl Freeze for RUserRole
impl RefUnwindSafe for RUserRole
impl Send for RUserRole
impl Sync for RUserRole
impl Unpin for RUserRole
impl UnwindSafe for RUserRole
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,
Source§impl<T> ValidateIp for Twhere
T: ToString,
impl<T> ValidateIp for Twhere
T: ToString,
Source§fn validate_ipv4(&self) -> bool
fn validate_ipv4(&self) -> bool
Validates whether the given string is an IP V4
Source§fn validate_ipv6(&self) -> bool
fn validate_ipv6(&self) -> bool
Validates whether the given string is an IP V6
Source§fn validate_ip(&self) -> bool
fn validate_ip(&self) -> bool
Validates whether the given string is an IP