pub struct OneTimeTokenPlugin { /* private fields */ }Expand description
Exchange a short-lived token for an existing authenticated session.
Implementations§
Source§impl OneTimeTokenPlugin
impl OneTimeTokenPlugin
pub fn new() -> Self
pub fn with_config(config: OneTimeTokenConfig) -> Self
pub fn expires_in(self, val: Duration) -> Self
pub fn disable_client_request(self, val: bool) -> Self
pub fn set_ott_header_on_new_session(self, val: bool) -> Self
pub fn store_token(self, val: TokenStorage) -> Self
pub fn generate_token(self, val: OneTimeTokenGenerator) -> Self
Source§impl OneTimeTokenPlugin
impl OneTimeTokenPlugin
Sourcepub async fn generate<S: AuthSchema>(
&self,
ctx: &AuthContext<S>,
session: SessionView,
user: UserView,
) -> AuthResult<String>
pub async fn generate<S: AuthSchema>( &self, ctx: &AuthContext<S>, session: SessionView, user: UserView, ) -> AuthResult<String>
Generate a token for a session supplied by trusted server code.
Trait Implementations§
Source§impl<S: AuthSchema> AuthPlugin<S> for OneTimeTokenPlugin
impl<S: AuthSchema> AuthPlugin<S> for OneTimeTokenPlugin
Source§fn on_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
req: &'life1 AuthRequest,
ctx: &'life2 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<AuthResponse>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
req: &'life1 AuthRequest,
ctx: &'life2 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = AuthResult<Option<AuthResponse>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called for each request - return Some(response) to handle, None to pass through
Source§fn after_request<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_req: &'life1 AuthRequest,
response: &'life2 mut AuthResponse,
ctx: &'life3 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn after_request<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_req: &'life1 AuthRequest,
response: &'life2 mut AuthResponse,
ctx: &'life3 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Inspect or extend the final route response after session cookies are applied.
Source§fn telemetry_plugin_id(&self) -> Option<&'static str>
fn telemetry_plugin_id(&self) -> Option<&'static str>
Return the upstream plugin ID; core option wrappers have no plugin ID.
Source§fn openapi(&self) -> Result<OpenApiPluginMetadata, AuthError>
fn openapi(&self) -> Result<OpenApiPluginMetadata, AuthError>
Document this configured plugin without invoking application field policies.
Source§fn password_hasher(&self) -> Option<Arc<dyn PasswordHasher>>
fn password_hasher(&self) -> Option<Arc<dyn PasswordHasher>>
Select the base password hasher before plugin initialization wraps it.
Source§fn telemetry(&self, _options: &mut PluginTelemetry)
fn telemetry(&self, _options: &mut PluginTelemetry)
Report configured options without invoking callbacks or initializing the plugin.
Source§fn rate_limits(&self) -> Result<Vec<PluginRateLimit>, AuthError>
fn rate_limits(&self) -> Result<Vec<PluginRateLimit>, AuthError>
Default endpoint limits, overridden by explicit application limits.
Source§fn on_init<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 mut AuthInitContext<S>,
) -> Pin<Box<dyn Future<Output = Result<(), AuthError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn on_init<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 mut AuthInitContext<S>,
) -> Pin<Box<dyn Future<Output = Result<(), AuthError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Called when the plugin is initialized
Source§fn on_http_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_req: &'life1 AuthRequest,
_ctx: &'life2 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = Result<Option<AuthResponse>, AuthError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn on_http_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_req: &'life1 AuthRequest,
_ctx: &'life2 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = Result<Option<AuthResponse>, AuthError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Inspect an HTTP request after rate limiting and before endpoint middleware.
Native API calls do not run this hook. A response skips endpoint hooks.
Source§fn on_http_response<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_req: &'life1 AuthRequest,
_response: &'life2 mut AuthResponse,
_ctx: &'life3 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = Result<Option<AuthResponse>, AuthError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Self: 'async_trait,
fn on_http_response<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_req: &'life1 AuthRequest,
_response: &'life2 mut AuthResponse,
_ctx: &'life3 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = Result<Option<AuthResponse>, AuthError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Self: 'async_trait,
Inspect the HTTP router response, including route misses and body errors.
Early HTTP request responses and native endpoint calls skip this hook.
A replacement response stops the remaining HTTP response hooks.
Source§fn before_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_req: &'life1 AuthRequest,
_ctx: &'life2 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = Result<Option<BeforeRequestAction>, AuthError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn before_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_req: &'life1 AuthRequest,
_ctx: &'life2 AuthContext<S>,
) -> Pin<Box<dyn Future<Output = Result<Option<BeforeRequestAction>, AuthError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Called for a registered endpoint after HTTP body decoding and origin checks. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for OneTimeTokenPlugin
impl !UnwindSafe for OneTimeTokenPlugin
impl Freeze for OneTimeTokenPlugin
impl Send for OneTimeTokenPlugin
impl Sync for OneTimeTokenPlugin
impl Unpin for OneTimeTokenPlugin
impl UnsafeUnpin for OneTimeTokenPlugin
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more