pub struct CapabilityStore { /* private fields */ }Expand description
Capability store with both session and persistent storage.
Implementations§
Source§impl CapabilityStore
impl CapabilityStore
Sourcepub fn with_persistence(path: impl AsRef<Path>) -> CapabilityResult<Self>
pub fn with_persistence(path: impl AsRef<Path>) -> CapabilityResult<Self>
Sourcepub fn with_kv_store(store: Arc<dyn KvStore>) -> CapabilityResult<Self>
pub fn with_kv_store(store: Arc<dyn KvStore>) -> CapabilityResult<Self>
Create a store backed by an existing KvStore (for shared stores).
§Errors
Returns an error if loading existing revoked/used tokens fails.
Sourcepub fn add(&self, token: CapabilityToken) -> CapabilityResult<()>
pub fn add(&self, token: CapabilityToken) -> CapabilityResult<()>
Sourcepub fn get(
&self,
token_id: &TokenId,
) -> CapabilityResult<Option<CapabilityToken>>
pub fn get( &self, token_id: &TokenId, ) -> CapabilityResult<Option<CapabilityToken>>
Get a token by ID.
§Errors
Returns CapabilityError::TokenRevoked if the token has been revoked,
or a storage error if reading fails.
Sourcepub fn has_capability(&self, resource: &str, permission: Permission) -> bool
pub fn has_capability(&self, resource: &str, permission: Permission) -> bool
Check if there’s a capability for a resource and permission.
Sourcepub fn find_capability(
&self,
resource: &str,
permission: Permission,
) -> Option<CapabilityToken>
pub fn find_capability( &self, resource: &str, permission: Permission, ) -> Option<CapabilityToken>
Find a token that grants a capability.
Sourcepub fn revoke(&self, token_id: &TokenId) -> CapabilityResult<()>
pub fn revoke(&self, token_id: &TokenId) -> CapabilityResult<()>
Sourcepub fn clear_session(&self) -> CapabilityResult<()>
pub fn clear_session(&self) -> CapabilityResult<()>
Sourcepub fn mark_used(&self, token_id: &TokenId) -> CapabilityResult<()>
pub fn mark_used(&self, token_id: &TokenId) -> CapabilityResult<()>
Mark a single-use token as used.
This should be called after successfully using a single-use token to prevent replay attacks.
§Errors
Returns an error if the token was already used or storage fails.
Sourcepub fn use_token(&self, token_id: &TokenId) -> CapabilityResult<CapabilityToken>
pub fn use_token(&self, token_id: &TokenId) -> CapabilityResult<CapabilityToken>
Validate and optionally consume a token.
For single-use tokens, this marks them as used. For regular tokens, this just validates them.
§Errors
Returns an error if the token is invalid, expired, revoked, or already used.
Sourcepub fn list_tokens(&self) -> CapabilityResult<Vec<CapabilityToken>>
pub fn list_tokens(&self) -> CapabilityResult<Vec<CapabilityToken>>
Sourcepub fn cleanup_expired(&self) -> CapabilityResult<usize>
pub fn cleanup_expired(&self) -> CapabilityResult<usize>
Cleanup expired tokens from persistent storage.
§Errors
Returns an error if storage operations fail.