diff --git a/synapse/rest/client/v1/admin.py b/synapse/rest/client/v1/admin.py
index 82433a2aa9..2e303264f6 100644
--- a/synapse/rest/client/v1/admin.py
+++ b/synapse/rest/client/v1/admin.py
@@ -466,17 +466,6 @@ class ShutdownRoomRestServlet(ClientV1RestServlet):
)
new_room_id = info["room_id"]
- yield self.event_creation_handler.create_and_send_nonmember_event(
- room_creator_requester,
- {
- "type": "m.room.message",
- "content": {"body": message, "msgtype": "m.text"},
- "room_id": new_room_id,
- "sender": new_room_user_id,
- },
- ratelimit=False,
- )
-
requester_user_id = requester.user.to_string()
logger.info("Shutting down room %r", room_id)
@@ -514,6 +503,17 @@ class ShutdownRoomRestServlet(ClientV1RestServlet):
kicked_users.append(user_id)
+ yield self.event_creation_handler.create_and_send_nonmember_event(
+ room_creator_requester,
+ {
+ "type": "m.room.message",
+ "content": {"body": message, "msgtype": "m.text"},
+ "room_id": new_room_id,
+ "sender": new_room_user_id,
+ },
+ ratelimit=False,
+ )
+
aliases_for_room = yield self.store.get_aliases_for_room(room_id)
yield self.store.update_aliases_for_room(
diff --git a/synapse/rest/client/v2_alpha/register.py b/synapse/rest/client/v2_alpha/register.py
index 7f812b8209..91c0d5e981 100644
--- a/synapse/rest/client/v2_alpha/register.py
+++ b/synapse/rest/client/v2_alpha/register.py
@@ -33,6 +33,10 @@ from synapse.http.servlet import (
parse_json_object_from_request,
parse_string,
)
+from synapse.replication.http.device import CheckDeviceRegisteredServlet
+from synapse.replication.http.registration import (
+ RegistrationUserCacheInvalidationServlet,
+)
from synapse.util.msisdn import phone_number_to_msisdn
from synapse.util.ratelimitutils import FederationRateLimiter
from synapse.util.threepids import check_3pid_allowed
@@ -190,9 +194,20 @@ class RegisterRestServlet(RestServlet):
self.registration_handler = hs.get_handlers().registration_handler
self.identity_handler = hs.get_handlers().identity_handler
self.room_member_handler = hs.get_room_member_handler()
- self.device_handler = hs.get_device_handler()
self.macaroon_gen = hs.get_macaroon_generator()
+ if self.hs.config.worker_app:
+
+ self._invalidate_caches_client = (
+ RegistrationUserCacheInvalidationServlet.make_client(hs)
+ )
+ self._device_check_registered_client = (
+ CheckDeviceRegisteredServlet.make_client(hs)
+ )
+ else:
+ self.device_handler = hs.get_device_handler()
+
+
@interactive_auth_handler
@defer.inlineCallbacks
def on_POST(self, request):
@@ -266,6 +281,9 @@ class RegisterRestServlet(RestServlet):
# == Shared Secret Registration == (e.g. create new user scripts)
if 'mac' in body:
+ if self.hs.config.worker_app:
+ raise SynapseError(403, "Not available at this endpoint")
+
# FIXME: Should we really be determining if this is shared secret
# auth based purely on the 'mac' key?
result = yield self._do_shared_secret_registration(
@@ -456,6 +474,9 @@ class RegisterRestServlet(RestServlet):
)
yield self.registration_handler.post_consent_actions(registered_user_id)
+ if self.hs.config.worker_app:
+ yield self._invalidate_caches_client(registered_user_id)
+
defer.returnValue((200, return_dict))
def on_OPTIONS(self, _):
@@ -466,6 +487,10 @@ class RegisterRestServlet(RestServlet):
user_id = yield self.registration_handler.appservice_register(
username, as_token
)
+
+ if self.hs.config.worker_app:
+ yield self._invalidate_caches_client(user_id)
+
defer.returnValue((yield self._create_registration_details(user_id, body)))
@defer.inlineCallbacks
@@ -647,6 +672,20 @@ class RegisterRestServlet(RestServlet):
})
defer.returnValue(result)
+ @defer.inlineCallbacks
+ def _check_device_registered(self, user_id, device_id, initial_display_name):
+
+ if self.hs.config.worker_app:
+ r = yield self._device_check_registered_client(
+ user_id, device_id, initial_display_name
+ )
+ defer.returnValue(r["device_id"])
+ else:
+ r = yield self.device_handler.check_device_registered(
+ user_id, device_id, initial_display_name
+ )
+ defer.returnValue(r)
+
def _register_device(self, user_id, params):
"""Register a device for a user.
@@ -663,7 +702,7 @@ class RegisterRestServlet(RestServlet):
# register the user's device
device_id = params.get("device_id")
initial_display_name = params.get("initial_device_display_name")
- return self.device_handler.check_device_registered(
+ return self._check_device_registered(
user_id, device_id, initial_display_name
)
@@ -680,7 +719,7 @@ class RegisterRestServlet(RestServlet):
# we have nowhere to store it.
device_id = synapse.api.auth.GUEST_DEVICE_ID
initial_display_name = params.get("initial_device_display_name")
- yield self.device_handler.check_device_registered(
+ yield self._check_device_registered(
user_id, device_id, initial_display_name
)
|