Skip to main content

AccessController

Struct AccessController 

Source
pub struct AccessController { /* private fields */ }
Expand description

Shared, cheaply clonable handle to the live access-control state.

None/absent controller or a disabled config means the feature is off and every surface behaves exactly as before. All mutations validate, bump the revision, and persist to the configured TOML path (if any).

Implementations§

Source§

impl AccessController

Source

pub fn new(config: AccessControlConfig) -> Result<Self, AccessConfigError>

Create a controller from a validated config.

Source

pub fn disabled() -> Self

Create a disabled controller (feature off until an admin enables it).

Source

pub fn load_or_default( path: impl Into<PathBuf>, ) -> Result<Self, AccessConfigError>

Load a controller from a TOML file, remembering the path so future admin mutations persist back to it. A missing file yields a default (disabled) config that is written on first mutation.

Source

pub fn with_persist_path(self, path: impl Into<PathBuf>) -> Self

Set (or replace) the persistence path.

Source

pub fn snapshot(&self) -> (Arc<AccessControlConfig>, u64)

Current config and revision.

Source

pub fn enabled(&self) -> bool

True when checks are actually enforced.

Source

pub fn replace_config( &self, config: AccessControlConfig, ) -> Result<u64, AccessConfigError>

Replace the whole configuration (admin surface).

Source

pub fn upsert_rule(&self, rule: AccessRule) -> Result<u64, AccessConfigError>

Insert or update one rule by id.

Source

pub fn delete_rule(&self, rule_id: &str) -> Result<u64, AccessConfigError>

Delete one rule by id.

Source

pub fn set_group( &self, name: &str, group: AccessGroup, ) -> Result<u64, AccessConfigError>

Create or replace a group (the live per-user assignment surface).

Source

pub fn delete_group(&self, name: &str) -> Result<u64, AccessConfigError>

Delete a group. Fails while rules still reference it.

Source

pub fn set_enabled(&self, enabled: bool) -> Result<u64, AccessConfigError>

Toggle enforcement. Enabling validates the anti-lockout invariant.

Source

pub fn view_for_subject(&self, subject: Option<&str>) -> AccessView

Build the per-request view for an authenticated subject (or None for an open/unauthenticated console).

Source

pub fn record_agent_attributes(&self, attributes: AgentResourceAttributes)

Refresh the cached resource attributes for one agent.

Source

pub fn replace_agent_attributes( &self, attributes: impl IntoIterator<Item = AgentResourceAttributes>, )

Replace the entire attribute cache from a fresh roster projection.

Used by the per-request priming at the SSE/RPC/timeline seams: it both fills attributes for label/role evaluation and evicts entries for agents no longer in the roster, so a retired-then-reused identity can’t keep stale role/labels alive and the cache can’t grow without bound. A no-op when given an empty roster, so a transient empty projection never blanks a populated cache.

Trait Implementations§

Source§

impl Clone for AccessController

Source§

fn clone(&self) -> AccessController

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AccessController

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more