mas_data_model/
lib.rs

1// Copyright 2024, 2025 New Vector Ltd.
2// Copyright 2021-2024 The Matrix.org Foundation C.I.C.
3//
4// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
5// Please see LICENSE files in the repository root for full details.
6
7#![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;
21mod version;
22
23/// Error when an invalid state transition is attempted.
24#[derive(Debug, Error)]
25#[error("invalid state transition")]
26pub struct InvalidTransitionError;
27
28pub use ulid::Ulid;
29
30pub use self::{
31    clock::{Clock, SystemClock},
32    compat::{
33        CompatAccessToken, CompatRefreshToken, CompatRefreshTokenState, CompatSession,
34        CompatSessionState, CompatSsoLogin, CompatSsoLoginState, Device, ToScopeTokenError,
35    },
36    oauth2::{
37        AuthorizationCode, AuthorizationGrant, AuthorizationGrantStage, Client, DeviceCodeGrant,
38        DeviceCodeGrantState, InvalidRedirectUriError, JwksOrJwksUri, Pkce, Session, SessionState,
39    },
40    policy_data::PolicyData,
41    site_config::{CaptchaConfig, CaptchaService, SessionExpirationConfig, SiteConfig},
42    tokens::{
43        AccessToken, AccessTokenState, RefreshToken, RefreshTokenState, TokenFormatError, TokenType,
44    },
45    upstream_oauth2::{
46        UpstreamOAuthAuthorizationSession, UpstreamOAuthAuthorizationSessionState,
47        UpstreamOAuthLink, UpstreamOAuthProvider, UpstreamOAuthProviderClaimsImports,
48        UpstreamOAuthProviderDiscoveryMode, UpstreamOAuthProviderImportAction,
49        UpstreamOAuthProviderImportPreference, UpstreamOAuthProviderLocalpartPreference,
50        UpstreamOAuthProviderOnBackchannelLogout, UpstreamOAuthProviderOnConflict,
51        UpstreamOAuthProviderPkceMode, UpstreamOAuthProviderResponseMode,
52        UpstreamOAuthProviderSubjectPreference, UpstreamOAuthProviderTokenAuthMethod,
53    },
54    user_agent::{DeviceType, UserAgent},
55    users::{
56        Authentication, AuthenticationMethod, BrowserSession, Password, User, UserEmail,
57        UserEmailAuthentication, UserEmailAuthenticationCode, UserRecoverySession,
58        UserRecoveryTicket, UserRegistration, UserRegistrationPassword, UserRegistrationToken,
59    },
60    utils::{BoxClock, BoxRng},
61    version::AppVersion,
62};