pub struct SessionExpiryPlugin { /* private fields */ }Expand description
Session expiry plugin. Tracks session lifetimes and rejects expired sessions.
Implementations§
Source§impl SessionExpiryPlugin
impl SessionExpiryPlugin
Sourcepub fn with_timeouts(max_lifetime: Duration, idle_timeout: Duration) -> Self
pub fn with_timeouts(max_lifetime: Duration, idle_timeout: Duration) -> Self
Create with custom timeouts.
Sourcepub fn check(&self, token: &str) -> Result<String, String>
pub fn check(&self, token: &str) -> Result<String, String>
Check if a session is still valid. Updates last_active if valid.
Sourcepub fn active_count(&self) -> usize
pub fn active_count(&self) -> usize
Get the number of active sessions.
Sourcepub fn refresh(&self, token: &str) -> bool
pub fn refresh(&self, token: &str) -> bool
Refresh a session’s expiry (extend the lifetime).
The new expires_at is capped at created_at + max_lifetime, so a
session can be kept alive by activity but will still be forced to
re-authenticate when its absolute lifetime is up. Previously this
method set expires_at = now + max_lifetime unconditionally, which
meant a busy user could renew their session indefinitely — defeating
the whole point of an “absolute” lifetime cap.
Trait Implementations§
Source§impl Plugin for SessionExpiryPlugin
impl Plugin for SessionExpiryPlugin
Source§fn on_init(&self, _ctx: &PluginContext)
fn on_init(&self, _ctx: &PluginContext)
Called once when the plugin is registered.
Source§fn routes(&self) -> Vec<PluginRoute>
fn routes(&self) -> Vec<PluginRoute>
Custom API routes this plugin handles.
Source§fn before_insert(
&self,
_entity: &str,
_data: &mut Value,
_auth: &AuthContext,
) -> Result<(), PluginError>
fn before_insert( &self, _entity: &str, _data: &mut Value, _auth: &AuthContext, ) -> Result<(), PluginError>
Called before an entity insert. Return Err to reject.
Source§fn after_insert(
&self,
_entity: &str,
_id: &str,
_data: &Value,
_auth: &AuthContext,
)
fn after_insert( &self, _entity: &str, _id: &str, _data: &Value, _auth: &AuthContext, )
Called after a successful insert.
Source§fn before_update(
&self,
_entity: &str,
_id: &str,
_data: &mut Value,
_auth: &AuthContext,
) -> Result<(), PluginError>
fn before_update( &self, _entity: &str, _id: &str, _data: &mut Value, _auth: &AuthContext, ) -> Result<(), PluginError>
Called before an entity update. Return Err to reject.
Source§fn after_update(
&self,
_entity: &str,
_id: &str,
_data: &Value,
_auth: &AuthContext,
)
fn after_update( &self, _entity: &str, _id: &str, _data: &Value, _auth: &AuthContext, )
Called after a successful update.
Source§fn before_delete(
&self,
_entity: &str,
_id: &str,
_auth: &AuthContext,
) -> Result<(), PluginError>
fn before_delete( &self, _entity: &str, _id: &str, _auth: &AuthContext, ) -> Result<(), PluginError>
Called before an entity delete. Return Err to reject.
Source§fn after_delete(&self, _entity: &str, _id: &str, _auth: &AuthContext)
fn after_delete(&self, _entity: &str, _id: &str, _auth: &AuthContext)
Called after a successful delete.
Source§fn on_request(
&self,
_method: &str,
_path: &str,
_auth: &AuthContext,
) -> Result<(), PluginError>
fn on_request( &self, _method: &str, _path: &str, _auth: &AuthContext, ) -> Result<(), PluginError>
Called on every incoming request (middleware).
Source§fn on_request_with_meta(
&self,
method: &str,
path: &str,
auth: &AuthContext,
_meta: &RequestMeta<'_>,
) -> Result<(), PluginError>
fn on_request_with_meta( &self, method: &str, path: &str, auth: &AuthContext, _meta: &RequestMeta<'_>, ) -> Result<(), PluginError>
Richer variant of [
on_request] that also receives per-request
metadata (peer IP today; more fields may be added later). The
default implementation delegates to on_request so existing
plugins keep working without changes. Plugins that care about
IP — notably rate limiting — override this hook.Source§fn on_session_create(&self, _user_id: &str, _token: &str)
fn on_session_create(&self, _user_id: &str, _token: &str)
Called when a new session is created.
Source§fn entities(&self) -> Vec<ManifestEntity>
fn entities(&self) -> Vec<ManifestEntity>
Additional manifest entities this plugin contributes.
Auto Trait Implementations§
impl !Freeze for SessionExpiryPlugin
impl RefUnwindSafe for SessionExpiryPlugin
impl Send for SessionExpiryPlugin
impl Sync for SessionExpiryPlugin
impl Unpin for SessionExpiryPlugin
impl UnsafeUnpin for SessionExpiryPlugin
impl UnwindSafe for SessionExpiryPlugin
Blanket Implementations§
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