Skip to main content

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 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/// Error when an invalid state transition is attempted.
25#[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};