diff --git a/changelog.d/9816.misc b/changelog.d/9816.misc
new file mode 100644
index 0000000000..d098122500
--- /dev/null
+++ b/changelog.d/9816.misc
@@ -0,0 +1 @@
+Rename some handlers and config modules to not duplicate the top-level module.
diff --git a/docs/sample_config.yaml b/docs/sample_config.yaml
index d260d76259..e0350279ad 100644
--- a/docs/sample_config.yaml
+++ b/docs/sample_config.yaml
@@ -1900,7 +1900,7 @@ saml2_config:
# sub-properties:
#
# module: The class name of a custom mapping module. Default is
-# 'synapse.handlers.oidc_handler.JinjaOidcMappingProvider'.
+# 'synapse.handlers.oidc.JinjaOidcMappingProvider'.
# See https://github.com/matrix-org/synapse/blob/master/docs/sso_mapping_providers.md#openid-mapping-providers
# for information on implementing a custom mapping provider.
#
diff --git a/docs/sso_mapping_providers.md b/docs/sso_mapping_providers.md
index e1d6ede7ba..50020d1a4a 100644
--- a/docs/sso_mapping_providers.md
+++ b/docs/sso_mapping_providers.md
@@ -106,7 +106,7 @@ A custom mapping provider must specify the following methods:
Synapse has a built-in OpenID mapping provider if a custom provider isn't
specified in the config. It is located at
-[`synapse.handlers.oidc_handler.JinjaOidcMappingProvider`](../synapse/handlers/oidc_handler.py).
+[`synapse.handlers.oidc.JinjaOidcMappingProvider`](../synapse/handlers/oidc.py).
## SAML Mapping Providers
@@ -190,4 +190,4 @@ A custom mapping provider must specify the following methods:
Synapse has a built-in SAML mapping provider if a custom provider isn't
specified in the config. It is located at
-[`synapse.handlers.saml_handler.DefaultSamlMappingProvider`](../synapse/handlers/saml_handler.py).
+[`synapse.handlers.saml.DefaultSamlMappingProvider`](../synapse/handlers/saml.py).
diff --git a/synapse/config/_base.pyi b/synapse/config/_base.pyi
index ddec356a07..ff9abbc232 100644
--- a/synapse/config/_base.pyi
+++ b/synapse/config/_base.pyi
@@ -7,16 +7,16 @@ from synapse.config import (
auth,
captcha,
cas,
- consent_config,
+ consent,
database,
emailconfig,
experimental,
groups,
- jwt_config,
+ jwt,
key,
logger,
metrics,
- oidc_config,
+ oidc,
password_auth_providers,
push,
ratelimiting,
@@ -24,9 +24,9 @@ from synapse.config import (
registration,
repository,
room_directory,
- saml2_config,
+ saml2,
server,
- server_notices_config,
+ server_notices,
spam_checker,
sso,
stats,
@@ -65,11 +65,11 @@ class RootConfig:
api: api.ApiConfig
appservice: appservice.AppServiceConfig
key: key.KeyConfig
- saml2: saml2_config.SAML2Config
+ saml2: saml2.SAML2Config
cas: cas.CasConfig
sso: sso.SSOConfig
- oidc: oidc_config.OIDCConfig
- jwt: jwt_config.JWTConfig
+ oidc: oidc.OIDCConfig
+ jwt: jwt.JWTConfig
auth: auth.AuthConfig
email: emailconfig.EmailConfig
worker: workers.WorkerConfig
@@ -78,9 +78,9 @@ class RootConfig:
spamchecker: spam_checker.SpamCheckerConfig
groups: groups.GroupsConfig
userdirectory: user_directory.UserDirectoryConfig
- consent: consent_config.ConsentConfig
+ consent: consent.ConsentConfig
stats: stats.StatsConfig
- servernotices: server_notices_config.ServerNoticesConfig
+ servernotices: server_notices.ServerNoticesConfig
roomdirectory: room_directory.RoomDirectoryConfig
thirdpartyrules: third_party_event_rules.ThirdPartyRulesConfig
tracer: tracer.TracerConfig
diff --git a/synapse/config/consent_config.py b/synapse/config/consent.py
index 30d07cc219..30d07cc219 100644
--- a/synapse/config/consent_config.py
+++ b/synapse/config/consent.py
diff --git a/synapse/config/homeserver.py b/synapse/config/homeserver.py
index 58e3bcd511..c23b66c88c 100644
--- a/synapse/config/homeserver.py
+++ b/synapse/config/homeserver.py
@@ -20,17 +20,17 @@ from .auth import AuthConfig
from .cache import CacheConfig
from .captcha import CaptchaConfig
from .cas import CasConfig
-from .consent_config import ConsentConfig
+from .consent import ConsentConfig
from .database import DatabaseConfig
from .emailconfig import EmailConfig
from .experimental import ExperimentalConfig
from .federation import FederationConfig
from .groups import GroupsConfig
-from .jwt_config import JWTConfig
+from .jwt import JWTConfig
from .key import KeyConfig
from .logger import LoggingConfig
from .metrics import MetricsConfig
-from .oidc_config import OIDCConfig
+from .oidc import OIDCConfig
from .password_auth_providers import PasswordAuthProviderConfig
from .push import PushConfig
from .ratelimiting import RatelimitConfig
@@ -39,9 +39,9 @@ from .registration import RegistrationConfig
from .repository import ContentRepositoryConfig
from .room import RoomConfig
from .room_directory import RoomDirectoryConfig
-from .saml2_config import SAML2Config
+from .saml2 import SAML2Config
from .server import ServerConfig
-from .server_notices_config import ServerNoticesConfig
+from .server_notices import ServerNoticesConfig
from .spam_checker import SpamCheckerConfig
from .sso import SSOConfig
from .stats import StatsConfig
diff --git a/synapse/config/jwt_config.py b/synapse/config/jwt.py
index 9e07e73008..9e07e73008 100644
--- a/synapse/config/jwt_config.py
+++ b/synapse/config/jwt.py
diff --git a/synapse/config/oidc_config.py b/synapse/config/oidc.py
index 5fb94376fd..72402eb81d 100644
--- a/synapse/config/oidc_config.py
+++ b/synapse/config/oidc.py
@@ -27,7 +27,10 @@ from synapse.util.stringutils import parse_and_validate_mxc_uri
from ._base import Config, ConfigError, read_file
-DEFAULT_USER_MAPPING_PROVIDER = "synapse.handlers.oidc_handler.JinjaOidcMappingProvider"
+DEFAULT_USER_MAPPING_PROVIDER = "synapse.handlers.oidc.JinjaOidcMappingProvider"
+# The module that JinjaOidcMappingProvider is in was renamed, we want to
+# transparently handle both the same.
+LEGACY_USER_MAPPING_PROVIDER = "synapse.handlers.oidc_handler.JinjaOidcMappingProvider"
class OIDCConfig(Config):
@@ -403,6 +406,8 @@ def _parse_oidc_config_dict(
"""
ump_config = oidc_config.get("user_mapping_provider", {})
ump_config.setdefault("module", DEFAULT_USER_MAPPING_PROVIDER)
+ if ump_config.get("module") == LEGACY_USER_MAPPING_PROVIDER:
+ ump_config["module"] = DEFAULT_USER_MAPPING_PROVIDER
ump_config.setdefault("config", {})
(
diff --git a/synapse/config/saml2_config.py b/synapse/config/saml2.py
index 55a7838b10..3d1218c8d1 100644
--- a/synapse/config/saml2_config.py
+++ b/synapse/config/saml2.py
@@ -25,7 +25,10 @@ from ._util import validate_config
logger = logging.getLogger(__name__)
-DEFAULT_USER_MAPPING_PROVIDER = (
+DEFAULT_USER_MAPPING_PROVIDER = "synapse.handlers.saml.DefaultSamlMappingProvider"
+# The module that DefaultSamlMappingProvider is in was renamed, we want to
+# transparently handle both the same.
+LEGACY_USER_MAPPING_PROVIDER = (
"synapse.handlers.saml_handler.DefaultSamlMappingProvider"
)
@@ -97,6 +100,8 @@ class SAML2Config(Config):
# Use the default user mapping provider if not set
ump_dict.setdefault("module", DEFAULT_USER_MAPPING_PROVIDER)
+ if ump_dict.get("module") == LEGACY_USER_MAPPING_PROVIDER:
+ ump_dict["module"] = DEFAULT_USER_MAPPING_PROVIDER
# Ensure a config is present
ump_dict["config"] = ump_dict.get("config") or {}
diff --git a/synapse/config/server_notices_config.py b/synapse/config/server_notices.py
index 48bf3241b6..48bf3241b6 100644
--- a/synapse/config/server_notices_config.py
+++ b/synapse/config/server_notices.py
diff --git a/synapse/handlers/cas_handler.py b/synapse/handlers/cas.py
index 7346ccfe93..7346ccfe93 100644
--- a/synapse/handlers/cas_handler.py
+++ b/synapse/handlers/cas.py
diff --git a/synapse/handlers/oidc_handler.py b/synapse/handlers/oidc.py
index b156196a70..45514be50f 100644
--- a/synapse/handlers/oidc_handler.py
+++ b/synapse/handlers/oidc.py
@@ -37,10 +37,7 @@ from twisted.web.client import readBody
from twisted.web.http_headers import Headers
from synapse.config import ConfigError
-from synapse.config.oidc_config import (
- OidcProviderClientSecretJwtKey,
- OidcProviderConfig,
-)
+from synapse.config.oidc import OidcProviderClientSecretJwtKey, OidcProviderConfig
from synapse.handlers.sso import MappingException, UserAttributes
from synapse.http.site import SynapseRequest
from synapse.logging.context import make_deferred_yieldable
diff --git a/synapse/handlers/saml_handler.py b/synapse/handlers/saml.py
index 80ba65b9e0..80ba65b9e0 100644
--- a/synapse/handlers/saml_handler.py
+++ b/synapse/handlers/saml.py
diff --git a/synapse/rest/client/v2_alpha/register.py b/synapse/rest/client/v2_alpha/register.py
index b26aad7b34..c5a6800b8a 100644
--- a/synapse/rest/client/v2_alpha/register.py
+++ b/synapse/rest/client/v2_alpha/register.py
@@ -30,7 +30,7 @@ from synapse.api.errors import (
)
from synapse.config import ConfigError
from synapse.config.captcha import CaptchaConfig
-from synapse.config.consent_config import ConsentConfig
+from synapse.config.consent import ConsentConfig
from synapse.config.emailconfig import ThreepidBehaviour
from synapse.config.ratelimiting import FederationRateLimitConfig
from synapse.config.registration import RegistrationConfig
diff --git a/synapse/server.py b/synapse/server.py
index 42d2fad8e8..59ae91b503 100644
--- a/synapse/server.py
+++ b/synapse/server.py
@@ -70,7 +70,7 @@ from synapse.handlers.acme import AcmeHandler
from synapse.handlers.admin import AdminHandler
from synapse.handlers.appservice import ApplicationServicesHandler
from synapse.handlers.auth import AuthHandler, MacaroonGenerator
-from synapse.handlers.cas_handler import CasHandler
+from synapse.handlers.cas import CasHandler
from synapse.handlers.deactivate_account import DeactivateAccountHandler
from synapse.handlers.device import DeviceHandler, DeviceWorkerHandler
from synapse.handlers.devicemessage import DeviceMessageHandler
@@ -145,8 +145,8 @@ logger = logging.getLogger(__name__)
if TYPE_CHECKING:
from txredisapi import RedisProtocol
- from synapse.handlers.oidc_handler import OidcHandler
- from synapse.handlers.saml_handler import SamlHandler
+ from synapse.handlers.oidc import OidcHandler
+ from synapse.handlers.saml import SamlHandler
T = TypeVar("T", bound=Callable[..., Any])
@@ -696,13 +696,13 @@ class HomeServer(metaclass=abc.ABCMeta):
@cache_in_self
def get_saml_handler(self) -> "SamlHandler":
- from synapse.handlers.saml_handler import SamlHandler
+ from synapse.handlers.saml import SamlHandler
return SamlHandler(self)
@cache_in_self
def get_oidc_handler(self) -> "OidcHandler":
- from synapse.handlers.oidc_handler import OidcHandler
+ from synapse.handlers.oidc import OidcHandler
return OidcHandler(self)
diff --git a/tests/handlers/test_cas.py b/tests/handlers/test_cas.py
index 0444b26798..b625995d12 100644
--- a/tests/handlers/test_cas.py
+++ b/tests/handlers/test_cas.py
@@ -13,7 +13,7 @@
# limitations under the License.
from unittest.mock import Mock
-from synapse.handlers.cas_handler import CasResponse
+from synapse.handlers.cas import CasResponse
from tests.test_utils import simple_async_mock
from tests.unittest import HomeserverTestCase, override_config
diff --git a/tests/handlers/test_oidc.py b/tests/handlers/test_oidc.py
index 34d2fc1dfb..a25c89bd5b 100644
--- a/tests/handlers/test_oidc.py
+++ b/tests/handlers/test_oidc.py
@@ -499,7 +499,7 @@ class OidcHandlerTestCase(HomeserverTestCase):
self.assertRenderedError("fetch_error")
# Handle code exchange failure
- from synapse.handlers.oidc_handler import OidcError
+ from synapse.handlers.oidc import OidcError
self.provider._exchange_code = simple_async_mock(
raises=OidcError("invalid_request")
@@ -583,7 +583,7 @@ class OidcHandlerTestCase(HomeserverTestCase):
body=b'{"error": "foo", "error_description": "bar"}',
)
)
- from synapse.handlers.oidc_handler import OidcError
+ from synapse.handlers.oidc import OidcError
exc = self.get_failure(self.provider._exchange_code(code), OidcError)
self.assertEqual(exc.value.error, "foo")
@@ -1126,7 +1126,7 @@ class OidcHandlerTestCase(HomeserverTestCase):
client_redirect_url: str,
ui_auth_session_id: str = "",
) -> str:
- from synapse.handlers.oidc_handler import OidcSessionData
+ from synapse.handlers.oidc import OidcSessionData
return self.handler._token_generator.generate_oidc_session_token(
state=state,
@@ -1152,7 +1152,7 @@ async def _make_callback_with_userinfo(
userinfo: the OIDC userinfo dict
client_redirect_url: the URL to redirect to on success.
"""
- from synapse.handlers.oidc_handler import OidcSessionData
+ from synapse.handlers.oidc import OidcSessionData
handler = hs.get_oidc_handler()
provider = handler._providers["oidc"]
|