mod error;
mod extractors;
mod middleware;
mod routes;
mod types;
pub use error::{AuthError, Result};
pub use extractors::{
AuthUser, OptionalAuthUser, SessionTokenFromBearer, SessionTokenFromCookie,
SessionTokenFromRequest,
};
pub use middleware::{AuthState, auth_middleware, require_auth};
pub use routes::create_router;
pub use types::{
AuthResponse, ChangePasswordRequest, ConnectionInfo, CookieConfig, CookieSameSite,
HealthResponse, LoginRequest, MagicLinkRequest, MagicLinkResponse, MessageResponse,
PasswordResetRequest, PasswordResetResponse, RegisterRequest, ResetPasswordRequest,
SessionResponse, UserResponse, VerifyMagicTokenRequest, VerifyResetTokenRequest,
VerifyResetTokenResponse,
};
use axum::Router;
use std::sync::Arc;
use torii::Torii;
use torii_core::RepositoryProvider;
pub fn routes<R>(torii: Arc<Torii<R>>) -> AuthRouterBuilder<R>
where
R: RepositoryProvider + 'static,
{
AuthRouterBuilder {
torii,
cookie_config: CookieConfig::default(),
}
}
pub struct AuthRouterBuilder<R: RepositoryProvider> {
torii: Arc<Torii<R>>,
cookie_config: CookieConfig,
}
impl<R: RepositoryProvider + 'static> AuthRouterBuilder<R> {
pub fn with_cookie_config(mut self, config: CookieConfig) -> Self {
self.cookie_config = config;
self
}
pub fn build(self) -> Router {
create_router(self.torii, self.cookie_config)
}
}
impl<R: RepositoryProvider + 'static> From<AuthRouterBuilder<R>> for Router {
fn from(builder: AuthRouterBuilder<R>) -> Self {
builder.build()
}
}