Skip to main content

PermissionRuleStore

Trait PermissionRuleStore 

Source
pub trait PermissionRuleStore: Send + Sync {
    // Required methods
    fn save_rules(
        &self,
        session_id: &str,
        project_id: Option<&str>,
        rules: &[RememberedRule],
    ) -> Result<(), RuntimeError>;
    fn load_rules(
        &self,
        session_id: &str,
        project_id: Option<&str>,
    ) -> Result<Vec<RememberedRule>, RuntimeError>;
    fn clear_rules(&self, session_id: &str) -> Result<(), RuntimeError>;
}
Expand description

Persistence backend for remembered permission rules.

Permission rules survive session restarts when backed by a persistent store.

The project_id parameter is an opaque string supplied by the consumer and used to associate rules with a project for cross-session inheritance. Mentra does not interpret its value.

Required Methods§

Source

fn save_rules( &self, session_id: &str, project_id: Option<&str>, rules: &[RememberedRule], ) -> Result<(), RuntimeError>

Persists the provided permission rules for a session, replacing any existing session-scoped rules. project_id is stored alongside each rule so that project-scoped rules can later be retrieved by other sessions that share the same project.

Source

fn load_rules( &self, session_id: &str, project_id: Option<&str>, ) -> Result<Vec<RememberedRule>, RuntimeError>

Loads all persisted permission rules that apply to the given session.

The returned set is the union of:

  • Session-scoped rules where session_id matches.
  • Project-scoped rules where project_id matches (when provided).
  • Global-scoped rules (always included).
Source

fn clear_rules(&self, session_id: &str) -> Result<(), RuntimeError>

Removes all persisted permission rules for a session.

Implementors§