pub struct AuthTokenBuilder { /* private fields */ }Expand description
Builder for creating AuthToken instances with fluent API.
Reduces cognitive load when constructing tokens with many optional fields.
Required fields are set in new(), optional fields via builder methods.
§Example
use auth_framework::tokens::{AuthToken, TokenMetadata};
use auth_framework::types::{Scopes, Permissions, Roles};
use chrono::{Utc, Duration};
let token = AuthToken::builder("user123", "token456", "access_token_here")
.scopes(Scopes::new(vec!["read".to_string(), "write".to_string()]))
.permissions(Permissions::new(vec!["admin".to_string()]))
.roles(Roles::new(vec!["user".to_string()]))
.expires_at(Utc::now() + Duration::hours(1))
.client_id("client123")
.build();Implementations§
Source§impl AuthTokenBuilder
impl AuthTokenBuilder
Sourcepub fn new(
token_id: impl Into<String>,
user_id: impl Into<String>,
access_token: impl Into<String>,
) -> Self
pub fn new( token_id: impl Into<String>, user_id: impl Into<String>, access_token: impl Into<String>, ) -> Self
Create a new builder with required fields.
Sets sensible defaults for optional fields:
issued_at: current timeexpires_at: 1 hour from nowscopes,permissions,roles: empty collectionsauth_method: “unknown”metadata: default (empty)
Sourcepub fn token_type(self, token_type: impl Into<String>) -> Self
pub fn token_type(self, token_type: impl Into<String>) -> Self
Set the token type (e.g., “bearer”).
§Example
use auth_framework::tokens::AuthToken;
let token = AuthToken::builder("t1", "u1", "access")
.token_type("bearer")
.build();
assert_eq!(token.token_type.as_deref(), Some("bearer"));Sourcepub fn subject(self, subject: impl Into<String>) -> Self
pub fn subject(self, subject: impl Into<String>) -> Self
Set the subject claim.
§Example
use auth_framework::tokens::AuthToken;
let token = AuthToken::builder("t1", "u1", "access")
.subject("user@example.com")
.build();
assert_eq!(token.subject.as_deref(), Some("user@example.com"));Sourcepub fn issuer(self, issuer: impl Into<String>) -> Self
pub fn issuer(self, issuer: impl Into<String>) -> Self
Set the token issuer.
§Example
use auth_framework::tokens::AuthToken;
let token = AuthToken::builder("t1", "u1", "access")
.issuer("auth.example.com")
.build();
assert_eq!(token.issuer.as_deref(), Some("auth.example.com"));Sourcepub fn refresh_token(self, refresh_token: impl Into<String>) -> Self
pub fn refresh_token(self, refresh_token: impl Into<String>) -> Self
Set the refresh token.
§Example
use auth_framework::tokens::AuthToken;
let token = AuthToken::builder("t1", "u1", "access")
.refresh_token("refresh_token_value")
.build();
assert!(token.refresh_token.is_some());Sourcepub fn issued_at(self, issued_at: DateTime<Utc>) -> Self
pub fn issued_at(self, issued_at: DateTime<Utc>) -> Self
Set the issued timestamp.
§Example
use auth_framework::tokens::AuthToken;
use chrono::Utc;
let now = Utc::now();
let token = AuthToken::builder("t1", "u1", "access")
.issued_at(now)
.build();
assert_eq!(token.issued_at, now);Sourcepub fn expires_at(self, expires_at: DateTime<Utc>) -> Self
pub fn expires_at(self, expires_at: DateTime<Utc>) -> Self
Set the expiration timestamp.
§Example
use auth_framework::tokens::AuthToken;
use chrono::{Utc, Duration};
let expires = Utc::now() + Duration::hours(2);
let token = AuthToken::builder("t1", "u1", "access")
.expires_at(expires)
.build();Sourcepub fn scopes(self, scopes: Scopes) -> Self
pub fn scopes(self, scopes: Scopes) -> Self
Set the granted scopes.
§Example
use auth_framework::tokens::AuthToken;
use auth_framework::types::Scopes;
let token = AuthToken::builder("t1", "u1", "access")
.scopes(Scopes::new(vec!["read".into(), "write".into()]))
.build();Sourcepub fn auth_method(self, auth_method: impl Into<String>) -> Self
pub fn auth_method(self, auth_method: impl Into<String>) -> Self
Set the authentication method.
§Example
use auth_framework::tokens::AuthToken;
let token = AuthToken::builder("t1", "u1", "access")
.auth_method("password")
.build();
assert_eq!(token.auth_method, "password");Sourcepub fn client_id(self, client_id: impl Into<String>) -> Self
pub fn client_id(self, client_id: impl Into<String>) -> Self
Set the client ID.
§Example
use auth_framework::tokens::AuthToken;
let token = AuthToken::builder("t1", "u1", "access")
.client_id("client-app")
.build();
assert_eq!(token.client_id.as_deref(), Some("client-app"));Sourcepub fn user_profile(self, user_profile: ProviderProfile) -> Self
pub fn user_profile(self, user_profile: ProviderProfile) -> Self
Sourcepub fn permissions(self, permissions: Permissions) -> Self
pub fn permissions(self, permissions: Permissions) -> Self
Set the user permissions.
§Example
use auth_framework::tokens::AuthToken;
use auth_framework::types::Permissions;
let token = AuthToken::builder("t1", "u1", "access")
.permissions(Permissions::new(vec!["admin".into()]))
.build();Sourcepub fn roles(self, roles: Roles) -> Self
pub fn roles(self, roles: Roles) -> Self
Set the user roles.
§Example
use auth_framework::tokens::AuthToken;
use auth_framework::types::Roles;
let token = AuthToken::builder("t1", "u1", "access")
.roles(Roles::new(vec!["editor".into()]))
.build();Sourcepub fn metadata(self, metadata: TokenMetadata) -> Self
pub fn metadata(self, metadata: TokenMetadata) -> Self
Set the token metadata.
§Example
use auth_framework::tokens::{AuthToken, TokenMetadata};
let meta = TokenMetadata::builder().issued_ip("10.0.0.1").build();
let token = AuthToken::builder("t1", "u1", "access")
.metadata(meta)
.build();Trait Implementations§
Source§impl Clone for AuthTokenBuilder
impl Clone for AuthTokenBuilder
Source§fn clone(&self) -> AuthTokenBuilder
fn clone(&self) -> AuthTokenBuilder
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for AuthTokenBuilder
impl RefUnwindSafe for AuthTokenBuilder
impl Send for AuthTokenBuilder
impl Sync for AuthTokenBuilder
impl Unpin for AuthTokenBuilder
impl UnsafeUnpin for AuthTokenBuilder
impl UnwindSafe for AuthTokenBuilder
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
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>
Converts
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>
Converts
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 more