pub struct SecurityContext {
pub user_id: Option<String>,
pub tenant_id: Option<TenantId>,
pub roles: HashSet<Role>,
pub permissions: PermissionSet,
pub claims: Option<TokenClaims>,
pub is_system: bool,
}Expand description
Security context for an authenticated request
Fields§
§user_id: Option<String>Authenticated user ID
tenant_id: Option<TenantId>Tenant ID
roles: HashSet<Role>Roles assigned to the user
permissions: PermissionSetPermissions derived from roles
claims: Option<TokenClaims>Token claims (if JWT auth)
is_system: boolWhether this is a system/service context
Implementations§
Source§impl SecurityContext
impl SecurityContext
Sourcepub fn user(user_id: impl Into<String>, tenant_id: Option<TenantId>) -> Self
pub fn user(user_id: impl Into<String>, tenant_id: Option<TenantId>) -> Self
Create a user context
Sourcepub fn with_roles(self, roles: impl IntoIterator<Item = Role>) -> Self
pub fn with_roles(self, roles: impl IntoIterator<Item = Role>) -> Self
Add multiple roles
Sourcepub fn with_claims(self, claims: TokenClaims) -> Self
pub fn with_claims(self, claims: TokenClaims) -> Self
Set claims
Sourcepub fn is_authenticated(&self) -> bool
pub fn is_authenticated(&self) -> bool
Check if user is authenticated
Sourcepub fn has_permission(&self, permission: Permission) -> bool
pub fn has_permission(&self, permission: Permission) -> bool
Check if user has a permission
Sourcepub fn require_permission(
&self,
permission: Permission,
) -> Result<(), SecurityError>
pub fn require_permission( &self, permission: Permission, ) -> Result<(), SecurityError>
Require a permission, returning error if not granted
Sourcepub fn require_authenticated(&self) -> Result<(), SecurityError>
pub fn require_authenticated(&self) -> Result<(), SecurityError>
Require authentication
Sourcepub fn can_access_tenant(&self, tenant_id: &TenantId) -> bool
pub fn can_access_tenant(&self, tenant_id: &TenantId) -> bool
Check if context can access a specific tenant
Trait Implementations§
Source§impl Clone for SecurityContext
impl Clone for SecurityContext
Source§fn clone(&self) -> SecurityContext
fn clone(&self) -> SecurityContext
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SecurityContext
impl Debug for SecurityContext
Auto Trait Implementations§
impl Freeze for SecurityContext
impl RefUnwindSafe for SecurityContext
impl Send for SecurityContext
impl Sync for SecurityContext
impl Unpin for SecurityContext
impl UnwindSafe for SecurityContext
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§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.