Skip to main content

AuthFramework

Struct AuthFramework 

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

Main authentication framework - now focused and modular

Implementations§

Source§

impl AuthFramework

Source

pub fn new(config: AuthConfig) -> Result<Self>

Create a new authentication framework.

Returns a descriptive error if the configuration is invalid rather than panicking, so callers can decide how to handle startup failures.

Equivalent to AuthFramework::try_new.

§Example
use auth_framework::{AuthFramework, config::AuthConfig};

let fw = AuthFramework::new(AuthConfig::default())?;
Source

pub fn try_new(config: AuthConfig) -> Result<Self>

Create a new authentication framework, returning an error instead of panicking.

This is the preferred constructor for library callers and server startup code where configuration errors should be handled gracefully rather than aborting the process.

§Example
let fw = AuthFramework::try_new(AuthConfig::default())?;
Source

pub fn replace_storage(&mut self, storage: Arc<dyn AuthStorage>)

Replace the storage backend with a custom implementation.

This will swap the internal storage Arc and recreate dependent managers so they use the provided storage instance.

Source

pub fn new_with_storage( config: AuthConfig, storage: Arc<dyn AuthStorage>, ) -> Result<Self>

Convenience constructor that creates a framework with a custom storage instance.

§Example
let fw = AuthFramework::new_with_storage(config, Arc::new(MyStorage::new()))?;
Source

pub fn register_method( &mut self, name: impl Into<String>, method: AuthMethodEnum, )

Register an authentication method.

§Example
fw.register_method("password", AuthMethodEnum::Password(PasswordAuth::default()));
Source

pub async fn initialize(&mut self) -> Result<()>

Initialize the authentication framework.

Sets up default roles and marks the framework as ready. Must be called before authenticate or validate_token.

§Example
fw.initialize().await?;
Source

pub async fn authenticate( &self, method_name: &str, credential: Credential, ) -> Result<AuthResult>

Authenticate a user with the specified method.

Delegates to authenticate_with_metadata with empty metadata.

§Example
let result = fw.authenticate("jwt", Credential::jwt(token)).await?;
match result {
    AuthResult::Success(token) => println!("authenticated"),
    AuthResult::MfaRequired(challenge) => println!("MFA needed"),
    AuthResult::Failure(msg) => eprintln!("failed: {msg}"),
}
Source

pub async fn authenticate_with_metadata( &self, method_name: &str, credential: Credential, metadata: CredentialMetadata, ) -> Result<AuthResult>

Authenticate a user with the specified method and additional metadata.

Metadata can carry client IP, user-agent, and other contextual information for adaptive risk scoring and audit logging.

§Example
let mut meta = CredentialMetadata::new();
meta.client_ip = Some("203.0.113.1".to_string());
let result = fw.authenticate_with_metadata("jwt", credential, meta).await?;
Source

pub async fn complete_mfa( &self, challenge: MfaChallenge, mfa_code: &str, ) -> Result<AuthToken>

Complete multi-factor authentication.

§Example
let token = fw.complete_mfa(challenge, "123456").await?;
Source

pub async fn validate_token(&self, token: &AuthToken) -> Result<bool>

Validate a token.

§Example
let valid = fw.validate_token(&token).await?;
Source

pub async fn get_user_info(&self, token: &AuthToken) -> Result<UserInfo>

Get user information from a token.

§Example
let info = fw.get_user_info(&token).await?;
println!("username: {}", info.username);
Source

pub async fn check_permission( &self, token: &AuthToken, action: &str, resource: &str, ) -> Result<bool>

Check if a token has a specific permission.

§Example
let allowed = fw.check_permission(&token, "read", "users").await?;
Source

pub fn token_manager(&self) -> &TokenManager

Get the token manager.

§Example
let tm = fw.token_manager();
Source

pub fn mfa_manager(&self) -> &MfaManager

Get the MFA manager.

§Example
let mfa = fw.mfa_manager();
Source

pub fn session_manager(&self) -> &SessionManager

Get the session manager.

§Example
let sm = fw.session_manager();
Source

pub fn user_manager(&self) -> &UserManager

Get the user manager.

§Example
let um = fw.user_manager();
Source

pub async fn initiate_sms_challenge(&self, user_id: &str) -> Result<String>

Initiate SMS challenge (uses SMSKit).

§Example
let challenge_id = fw.initiate_sms_challenge("user-1").await?;
Source

pub async fn send_sms_code( &self, challenge_id: &str, phone_number: &str, ) -> Result<()>

Send SMS code (uses SMSKit).

§Example
fw.send_sms_code(&challenge_id, "+1234567890").await?;
Source

pub async fn generate_sms_code(&self, challenge_id: &str) -> Result<String>

Generate SMS code (uses SMSKit).

§Example
let code = fw.generate_sms_code(&challenge_id).await?;
Source

pub async fn verify_sms_code( &self, challenge_id: &str, code: &str, ) -> Result<bool>

Verify SMS code (uses SMSKit).

§Example
let ok = fw.verify_sms_code(&challenge_id, "123456").await?;
Source

pub async fn cleanup_expired_data(&self) -> Result<()>

Clean up expired data (sessions, MFA challenges, rate limiter entries).

§Example
fw.cleanup_expired_data().await?;
Source

pub async fn get_stats(&self) -> Result<AuthStats>

Get authentication framework statistics.

§Example
let stats = fw.get_stats().await?;
println!("methods: {:?}", stats.registered_methods);

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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<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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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