pub struct ActiveSession {
pub id: String,
pub is_current: bool,
pub user_agent: String,
pub ip: String,
pub issued_at: Option<Timestamp>,
pub expires_at: Option<Timestamp>,
pub last_used_at: Option<Timestamp>,
pub owner_authorization: Option<OwnerAuthorizationBundle>,
}Fields§
§id: StringPublic id of the refresh token (matches auth_refresh_tokens.id).
Used by RevokeSession to identify which row to revoke.
is_current: boolTrue for the session this RPC was invoked on, so the UI can mark it “Current” and disable the revoke button (revoking yourself is just logout — the dedicated logout flow handles cookie cleanup correctly).
user_agent: StringCaptured at issue time. Surfaced in the device list as a human-readable string (“Chrome on macOS”, “Safari on iPhone”). The web layer parses to that shape for display; the raw UA header is what’s stored.
ip: StringCaptured at issue time. Empty string when unknown.
issued_at: Option<Timestamp>§expires_at: Option<Timestamp>§last_used_at: Option<Timestamp>Last time this token was rotated (i.e. the user actively used the app from this session). Zero when never rotated.
Typed owner evidence associated with this session. This is transport data, not a second live authorization decision during cutover A1.
Trait Implementations§
Source§impl Clone for ActiveSession
impl Clone for ActiveSession
Source§fn clone(&self) -> ActiveSession
fn clone(&self) -> ActiveSession
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ActiveSession
impl Debug for ActiveSession
Source§impl Default for ActiveSession
impl Default for ActiveSession
Source§impl Message for ActiveSession
impl Message for ActiveSession
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.