pub struct LastLoginMethodPlugin<S: AuthSchema> { /* private fields */ }Expand description
Last-login plugin with typed endpoint callbacks.
Implementations§
Source§impl<S: AuthSchema> LastLoginMethodPlugin<S>
impl<S: AuthSchema> LastLoginMethodPlugin<S>
Sourcepub fn new(config: LastLoginMethodConfig) -> Self
pub fn new(config: LastLoginMethodConfig) -> Self
Construct the plugin with explicit persistence and cookie options.
Sourcepub fn custom_resolve_method(
self,
resolver: Arc<dyn LastLoginMethodResolver<S>>,
) -> Self
pub fn custom_resolve_method( self, resolver: Arc<dyn LastLoginMethodResolver<S>>, ) -> Self
Configure a synchronous method resolver.
Configure the asynchronous cookie permission callback.
Trait Implementations§
Source§impl<S: AuthSchema> AuthPlugin<S> for LastLoginMethodPlugin<S>
impl<S: AuthSchema> AuthPlugin<S> for LastLoginMethodPlugin<S>
Source§fn openapi(&self) -> AuthResult<OpenApiPluginMetadata>
fn openapi(&self) -> AuthResult<OpenApiPluginMetadata>
Document this configured plugin without invoking application field policies.
Source§fn on_init<'life0, 'life1, 'async_trait>(
&'life0 self,
context: &'life1 mut AuthInitContext<S>,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_init<'life0, 'life1, 'async_trait>(
&'life0 self,
context: &'life1 mut AuthInitContext<S>,
) -> Pin<Box<dyn Future<Output = AuthResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when the plugin is initialized
Source§fn on_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_: &'life1 AuthRequest,
_: &'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,
_: &'life1 AuthRequest,
_: &'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,
request: &'life1 AuthRequest,
response: &'life2 mut AuthResponse,
auth: &'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,
request: &'life1 AuthRequest,
response: &'life2 mut AuthResponse,
auth: &'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 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_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
Source§impl<S: AuthSchema> Clone for LastLoginMethodPlugin<S>
impl<S: AuthSchema> Clone for LastLoginMethodPlugin<S>
Source§impl<S: AuthSchema> Default for LastLoginMethodPlugin<S>
impl<S: AuthSchema> Default for LastLoginMethodPlugin<S>
Auto Trait Implementations§
impl<S> !RefUnwindSafe for LastLoginMethodPlugin<S>
impl<S> !UnwindSafe for LastLoginMethodPlugin<S>
impl<S> Freeze for LastLoginMethodPlugin<S>where
Option<Arc<dyn LastLoginMethodResolver<S>>>: Freeze,
Option<Arc<dyn BeforeStoreLastLoginCookie<S>>>: Freeze,
impl<S> Send for LastLoginMethodPlugin<S>where
Option<Arc<dyn LastLoginMethodResolver<S>>>: Send,
Option<Arc<dyn BeforeStoreLastLoginCookie<S>>>: Send,
impl<S> Sync for LastLoginMethodPlugin<S>where
Option<Arc<dyn LastLoginMethodResolver<S>>>: Sync,
Option<Arc<dyn BeforeStoreLastLoginCookie<S>>>: Sync,
impl<S> Unpin for LastLoginMethodPlugin<S>where
Option<Arc<dyn LastLoginMethodResolver<S>>>: Unpin,
Option<Arc<dyn BeforeStoreLastLoginCookie<S>>>: Unpin,
impl<S> UnsafeUnpin for LastLoginMethodPlugin<S>where
Option<Arc<dyn LastLoginMethodResolver<S>>>: UnsafeUnpin,
Option<Arc<dyn BeforeStoreLastLoginCookie<S>>>: UnsafeUnpin,
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