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§
Sourcefn save_rules(
&self,
session_id: &str,
project_id: Option<&str>,
rules: &[RememberedRule],
) -> Result<(), RuntimeError>
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.
Sourcefn load_rules(
&self,
session_id: &str,
project_id: Option<&str>,
) -> Result<Vec<RememberedRule>, RuntimeError>
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_idmatches. - Project-scoped rules where
project_idmatches (when provided). - Global-scoped rules (always included).
Sourcefn clear_rules(&self, session_id: &str) -> Result<(), RuntimeError>
fn clear_rules(&self, session_id: &str) -> Result<(), RuntimeError>
Removes all persisted permission rules for a session.