Skip to main content

TokenGenerator

Struct TokenGenerator 

Source
pub struct TokenGenerator { /* private fields */ }
Expand description

Consolidated token generation and validation service.

Wraps JwtService for JWT operations and provides static methods for crypto operations that don’t require JWT context.

Implementations§

Source§

impl TokenGenerator

Source

pub fn new(jwt_service: Arc<JwtService>) -> Self

Create a new TokenGenerator wrapping a shared JwtService.

Source

pub fn generate_otp() -> String

Generate a 6-digit OTP code.

Source

pub fn hash_token(token: &str) -> String

SHA-256 hash a token/OTP before storing in the database.

Source

pub fn generate_refresh_token() -> String

Generate a new refresh token string (UUID v4).

Source

pub fn constant_time_eq(a: &str, b: &str) -> bool

Constant-time string comparison to prevent timing side-channel attacks.

The XOR-fold comparison runs in constant time for inputs of equal length. The length check on line 1 does leak whether lengths differ via timing, but this is acceptable because all call sites compare fixed-length values (6-digit OTP codes or 64-char SHA-256 hex hashes).

Do NOT use this for variable-length secret comparison.

Source

pub fn create_access_token(&self, claims: &Claims) -> Result<String>

Create an access token from claims.

Source

pub fn create_refresh_token_jwt( &self, claims: &RefreshTokenClaims, ) -> Result<String>

Create a refresh token JWT from refresh claims.

Source

pub fn validate_access_token(&self, token: &str) -> Result<Claims>

Validate an access token and return its claims.

Source

pub fn validate_refresh_token(&self, token: &str) -> Result<RefreshTokenClaims>

Validate a refresh token JWT and return its claims.

Source

pub fn decode_access_token(&self, token: &str) -> Result<Claims>

Decode an access token without expiry validation.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more