1#![allow(clippy::module_name_repetitions)]
8
9use thiserror::Error;
10
11pub mod clock;
12pub(crate) mod compat;
13pub mod oauth2;
14pub(crate) mod policy_data;
15mod site_config;
16pub(crate) mod tokens;
17pub(crate) mod upstream_oauth2;
18pub(crate) mod user_agent;
19pub(crate) mod users;
20mod utils;
21
22#[derive(Debug, Error)]
24#[error("invalid state transition")]
25pub struct InvalidTransitionError;
26
27pub use ulid::Ulid;
28
29pub use self::{
30 clock::{Clock, SystemClock},
31 compat::{
32 CompatAccessToken, CompatRefreshToken, CompatRefreshTokenState, CompatSession,
33 CompatSessionState, CompatSsoLogin, CompatSsoLoginState, Device, ToScopeTokenError,
34 },
35 oauth2::{
36 AuthorizationCode, AuthorizationGrant, AuthorizationGrantStage, Client, DeviceCodeGrant,
37 DeviceCodeGrantState, InvalidRedirectUriError, JwksOrJwksUri, Pkce, Session, SessionState,
38 },
39 policy_data::PolicyData,
40 site_config::{CaptchaConfig, CaptchaService, SessionExpirationConfig, SiteConfig},
41 tokens::{
42 AccessToken, AccessTokenState, RefreshToken, RefreshTokenState, TokenFormatError, TokenType,
43 },
44 upstream_oauth2::{
45 UpstreamOAuthAuthorizationSession, UpstreamOAuthAuthorizationSessionState,
46 UpstreamOAuthLink, UpstreamOAuthProvider, UpstreamOAuthProviderClaimsImports,
47 UpstreamOAuthProviderDiscoveryMode, UpstreamOAuthProviderImportAction,
48 UpstreamOAuthProviderImportPreference, UpstreamOAuthProviderLocalpartPreference,
49 UpstreamOAuthProviderOnBackchannelLogout, UpstreamOAuthProviderOnConflict,
50 UpstreamOAuthProviderPkceMode, UpstreamOAuthProviderResponseMode,
51 UpstreamOAuthProviderSubjectPreference, UpstreamOAuthProviderTokenAuthMethod,
52 },
53 user_agent::{DeviceType, UserAgent},
54 users::{
55 Authentication, AuthenticationMethod, BrowserSession, Password, User, UserEmail,
56 UserEmailAuthentication, UserEmailAuthenticationCode, UserRecoverySession,
57 UserRecoveryTicket, UserRegistration, UserRegistrationPassword, UserRegistrationToken,
58 },
59 utils::{BoxClock, BoxRng},
60};