mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2024-12-21 12:35:04 -05:00
Fallback if 'approved' isn't included in a registration replication request (#14135)
This commit is contained in:
parent
d94bcbced3
commit
422cff7df6
1
changelog.d/14135.bugfix
Normal file
1
changelog.d/14135.bugfix
Normal file
@ -0,0 +1 @@
|
|||||||
|
Fix a bug introduced in Synapse 1.69.0rc1 which would cause registration replication requests to fail if the worker sending the request is not running Synapse 1.69.
|
@ -39,6 +39,16 @@ class ReplicationRegisterServlet(ReplicationEndpoint):
|
|||||||
self.store = hs.get_datastores().main
|
self.store = hs.get_datastores().main
|
||||||
self.registration_handler = hs.get_registration_handler()
|
self.registration_handler = hs.get_registration_handler()
|
||||||
|
|
||||||
|
# Default value if the worker that sent the replication request did not include
|
||||||
|
# an 'approved' property.
|
||||||
|
if (
|
||||||
|
hs.config.experimental.msc3866.enabled
|
||||||
|
and hs.config.experimental.msc3866.require_approval_for_new_accounts
|
||||||
|
):
|
||||||
|
self._approval_default = False
|
||||||
|
else:
|
||||||
|
self._approval_default = True
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def _serialize_payload( # type: ignore[override]
|
async def _serialize_payload( # type: ignore[override]
|
||||||
user_id: str,
|
user_id: str,
|
||||||
@ -92,6 +102,12 @@ class ReplicationRegisterServlet(ReplicationEndpoint):
|
|||||||
|
|
||||||
await self.registration_handler.check_registration_ratelimit(content["address"])
|
await self.registration_handler.check_registration_ratelimit(content["address"])
|
||||||
|
|
||||||
|
# Always default admin users to approved (since it means they were created by
|
||||||
|
# an admin).
|
||||||
|
approved_default = self._approval_default
|
||||||
|
if content["admin"]:
|
||||||
|
approved_default = True
|
||||||
|
|
||||||
await self.registration_handler.register_with_store(
|
await self.registration_handler.register_with_store(
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
password_hash=content["password_hash"],
|
password_hash=content["password_hash"],
|
||||||
@ -103,7 +119,7 @@ class ReplicationRegisterServlet(ReplicationEndpoint):
|
|||||||
user_type=content["user_type"],
|
user_type=content["user_type"],
|
||||||
address=content["address"],
|
address=content["address"],
|
||||||
shadow_banned=content["shadow_banned"],
|
shadow_banned=content["shadow_banned"],
|
||||||
approved=content["approved"],
|
approved=content.get("approved", approved_default),
|
||||||
)
|
)
|
||||||
|
|
||||||
return 200, {}
|
return 200, {}
|
||||||
|
Loading…
Reference in New Issue
Block a user