summary refs log tree commit diff
path: root/packages/overlays/matrix-synapse/patches/0008-Add-option-to-allow-registrations-that-begin-with-_-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/overlays/matrix-synapse/patches/0008-Add-option-to-allow-registrations-that-begin-with-_-.patch')
-rw-r--r--packages/overlays/matrix-synapse/patches/0008-Add-option-to-allow-registrations-that-begin-with-_-.patch116
1 files changed, 0 insertions, 116 deletions
diff --git a/packages/overlays/matrix-synapse/patches/0008-Add-option-to-allow-registrations-that-begin-with-_-.patch b/packages/overlays/matrix-synapse/patches/0008-Add-option-to-allow-registrations-that-begin-with-_-.patch
deleted file mode 100644

index fa37022..0000000 --- a/packages/overlays/matrix-synapse/patches/0008-Add-option-to-allow-registrations-that-begin-with-_-.patch +++ /dev/null
@@ -1,116 +0,0 @@ -From 44ae5362fd952dbb209f4b52ee9c96641163f032 Mon Sep 17 00:00:00 2001 -From: _ <x5f@fastmail.com> -Date: Thu, 15 May 2025 04:31:52 -0700 -Subject: [PATCH 08/34] Add option to allow registrations that begin with '_' - (#18262) - -Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> ---- - changelog.d/18262.feature | 1 + - .../configuration/config_documentation.md | 14 +++++++++++ - synapse/config/registration.py | 4 ++++ - synapse/handlers/register.py | 5 +++- - tests/handlers/test_register.py | 23 +++++++++++++++++++ - 5 files changed, 46 insertions(+), 1 deletion(-) - create mode 100644 changelog.d/18262.feature - -diff --git a/changelog.d/18262.feature b/changelog.d/18262.feature -new file mode 100644 -index 0000000000..c8249faa76 ---- /dev/null -+++ b/changelog.d/18262.feature -@@ -0,0 +1 @@ -+Add option to allow registrations that begin with `_`. Contributed by `_` (@hex5f). -diff --git a/docs/usage/configuration/config_documentation.md b/docs/usage/configuration/config_documentation.md -index 2228c18a6c..e688bc5cd8 100644 ---- a/docs/usage/configuration/config_documentation.md -+++ b/docs/usage/configuration/config_documentation.md -@@ -2887,6 +2887,20 @@ Example configuration: - inhibit_user_in_use_error: true - ``` - --- -+### `allow_underscore_prefixed_registration` -+ -+Whether users are allowed to register with a underscore-prefixed localpart. -+By default, AppServices use prefixes like `_example` to namespace their -+associated ghost users. If turned on, this may result in clashes or confusion. -+Useful when provisioning users from an external identity provider. -+ -+Defaults to false. -+ -+Example configuration: -+```yaml -+allow_underscore_prefixed_registration: false -+``` -+--- - ## User session management - --- - ### `session_lifetime` -diff --git a/synapse/config/registration.py b/synapse/config/registration.py -index 3cf7031656..8adf21079e 100644 ---- a/synapse/config/registration.py -+++ b/synapse/config/registration.py -@@ -162,6 +162,10 @@ class RegistrationConfig(Config): - "disable_msisdn_registration", False - ) - -+ self.allow_underscore_prefixed_localpart = config.get( -+ "allow_underscore_prefixed_localpart", False -+ ) -+ - session_lifetime = config.get("session_lifetime") - if session_lifetime is not None: - session_lifetime = self.parse_duration(session_lifetime) -diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py -index ecfea175c7..3e86349981 100644 ---- a/synapse/handlers/register.py -+++ b/synapse/handlers/register.py -@@ -159,7 +159,10 @@ class RegistrationHandler: - if not localpart: - raise SynapseError(400, "User ID cannot be empty", Codes.INVALID_USERNAME) - -- if localpart[0] == "_": -+ if ( -+ localpart[0] == "_" -+ and not self.hs.config.registration.allow_underscore_prefixed_localpart -+ ): - raise SynapseError( - 400, "User ID may not begin with _", Codes.INVALID_USERNAME - ) -diff --git a/tests/handlers/test_register.py b/tests/handlers/test_register.py -index 92487692db..dda389c08b 100644 ---- a/tests/handlers/test_register.py -+++ b/tests/handlers/test_register.py -@@ -588,6 +588,29 @@ class RegistrationTestCase(unittest.HomeserverTestCase): - d = self.store.is_support_user(user_id) - self.assertFalse(self.get_success(d)) - -+ def test_underscore_localpart_rejected_by_default(self) -> None: -+ for invalid_user_id in ("_", "_prefixed"): -+ with self.subTest(invalid_user_id=invalid_user_id): -+ self.get_failure( -+ self.handler.register_user(localpart=invalid_user_id), -+ SynapseError, -+ ) -+ -+ @override_config( -+ { -+ "allow_underscore_prefixed_localpart": True, -+ } -+ ) -+ def test_underscore_localpart_allowed_if_configured(self) -> None: -+ for valid_user_id in ("_", "_prefixed"): -+ with self.subTest(valid_user_id=valid_user_id): -+ user_id = self.get_success( -+ self.handler.register_user( -+ localpart=valid_user_id, -+ ), -+ ) -+ self.assertEqual(user_id, f"@{valid_user_id}:test") -+ - def test_invalid_user_id(self) -> None: - invalid_user_id = "^abcd" - self.get_failure( --- -2.49.0 -