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