Skip to main content

SessionManager

Struct SessionManager 

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

Session manager for handling authentication sessions

API keys are stored securely via the KeyStore trait (system keyring, encrypted file, etc.). The session file only contains non-sensitive metadata.

Implementations§

Source§

impl SessionManager

Source

pub fn new(session_file: PathBuf, key_store: Option<Box<dyn KeyStore>>) -> Self

Create a new session manager

§Arguments
  • session_file - Path to the session JSON file
  • key_store - Optional secure key store for API keys. If None, API keys are stored in the session file as a fallback.
Source

pub fn load(&self) -> Result<Option<AuthSession>>

Load session from disk

Source

pub fn save(&self, session: &AuthSession, api_key: Option<&str>) -> Result<()>

Save session to disk and optionally store API key in key store

The API key is stored in the key store if available, not in the session file.

Source

pub fn delete(&self) -> Result<()>

Delete session from disk and key store

Source

pub fn is_authenticated(&self) -> Result<bool>

Check if user is authenticated (has valid session)

Source

pub fn get_session(&self) -> Result<Option<AuthSession>>

Get the current session if valid

Source

pub fn get_api_key(&self) -> Result<Option<Zeroizing<String>>>

Get the API key for the current session

Tries key store first, falls back to session file for backwards compatibility. Returns Zeroizing to ensure key is cleared from memory when dropped.

Source

pub fn create_session( response: AuthResponse, backend: String, _api_key: String, ) -> AuthSession

Create session from authentication response

Source

pub fn migrate_to_key_store(&self) -> Result<bool>

Migrate legacy session (with api_key in file) to key store

Call this during login to migrate old sessions to secure storage.

Source

pub fn session_file(&self) -> &Path

Get the session file path

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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, 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
Source§

impl<T> ErasedDestructor for T
where T: 'static,