Skip to main content

Engine

Struct Engine 

Source
pub struct Engine<S = Missing, T = Missing> {
    pub providers: HashMap<String, Arc<dyn ErasedOAuthFlow>>,
    pub session_store: S,
    pub session_config: SessionConfig,
    pub token_manager: T,
}
Expand description

The central orchestrator for Authkestra.

Engine ties together authentication methods, session management, and flows. It is constructed using the EngineBuilder which uses the Typestate pattern to ensure that certain methods are only available when the necessary components are configured.

Fields§

§providers: HashMap<String, Arc<dyn ErasedOAuthFlow>>

Map of registered OAuth providers.

§session_store: S

The session storage backend.

§session_config: SessionConfig

Configuration for session cookies.

§token_manager: T

Manager for JWT signing and verification.

Implementations§

Source§

impl Engine<Missing, Missing>

Source

pub fn builder() -> EngineBuilder<Missing, Missing>

Start building a new Engine.

Source§

impl<T> Engine<Configured<Arc<dyn SessionStore>>, T>

Source

pub fn session_store(&self) -> Arc<dyn SessionStore>

Get the session store.

Source

pub async fn create_session( &self, identity: Identity, ) -> Result<Session, AuthError>

Create a new session for the given identity.

Source§

impl<S> Engine<S, Configured<Arc<TokenManager>>>

Source

pub fn token_manager(&self) -> Arc<TokenManager>

Get the token manager.

Source

pub fn issue_token( &self, identity: Identity, expires_in_secs: u64, ) -> Result<String, AuthError>

Issue a JWT for the given identity.

Trait Implementations§

Source§

impl<S, T> Clone for Engine<S, T>
where S: Clone, T: Clone,

Source§

fn clone(&self) -> Self

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<T> HasSessionStore for Engine<Configured<Arc<dyn SessionStore>>, T>

Source§

fn session_store(&self) -> Arc<dyn SessionStore>

Returns the session store.
Source§

impl<S> HasTokenManager for Engine<S, Configured<Arc<TokenManager>>>

Available on crate feature token only.
Source§

fn token_manager(&self) -> Arc<TokenManager>

Returns the token manager.

Auto Trait Implementations§

§

impl<S = Missing, T = Missing> !RefUnwindSafe for Engine<S, T>

§

impl<S = Missing, T = Missing> !UnwindSafe for Engine<S, T>

§

impl<S, T> Freeze for Engine<S, T>
where S: Freeze, T: Freeze,

§

impl<S, T> Send for Engine<S, T>
where S: Send, T: Send,

§

impl<S, T> Sync for Engine<S, T>
where S: Sync, T: Sync,

§

impl<S, T> Unpin for Engine<S, T>
where S: Unpin, T: Unpin,

§

impl<S, T> UnsafeUnpin for Engine<S, T>
where S: UnsafeUnpin, T: UnsafeUnpin,

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> 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: 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