pub struct RefreshToken {
pub id: RefreshTokenId,
pub user_id: UserId,
pub tenant_id: TenantId,
pub token_hash: String,
pub issued_at: DateTime<Utc>,
pub expires_at: DateTime<Utc>,
pub revoked: bool,
pub device_info: Option<String>,
pub family_id: Option<TokenFamilyId>,
pub device_id: Option<DeviceId>,
}Expand description
A refresh token record. Long-lived, stored server-side, used to obtain new access/session tokens.
Fields§
§id: RefreshTokenIdUnique token ID.
user_id: UserIdThe user this token belongs to.
tenant_id: TenantIdThe tenant context for the session.
token_hash: StringSHA-256 hash of the actual token (never store plaintext).
issued_at: DateTime<Utc>When this token was created.
expires_at: DateTime<Utc>When this token expires.
revoked: boolWhether this token has been revoked.
device_info: Option<String>Optional device fingerprint (User-Agent or custom identifier).
family_id: Option<TokenFamilyId>Family ID for token rotation tracking.
All tokens in a rotation chain share the same family ID (the original token’s ID). If a revoked token is reused, the entire family can be revoked as a compromise signal.
device_id: Option<DeviceId>Opaque DeviceId this token was issued to.
Carried through rotation so every member of a rotation family
retains the link back to the originating
Device. When family revocation
fires (rotated-out token reused, a compromise signal), the set of
device_id values across the family identifies which devices to
transition to DeviceTrustLevel::Revoked via
cascade_revoke_devices.
None for tokens issued before device support landed or for clients that
chose not to associate the token with a device.
Trait Implementations§
Source§impl Clone for RefreshToken
impl Clone for RefreshToken
Source§fn clone(&self) -> RefreshToken
fn clone(&self) -> RefreshToken
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for RefreshToken
impl RefUnwindSafe for RefreshToken
impl Send for RefreshToken
impl Sync for RefreshToken
impl Unpin for RefreshToken
impl UnsafeUnpin for RefreshToken
impl UnwindSafe for RefreshToken
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> 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<'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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.