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