summary refs log tree commit diff
path: root/synapse/rest
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/rest')
-rw-r--r--synapse/rest/client/v1/admin.py22
-rw-r--r--synapse/rest/client/v2_alpha/register.py45
2 files changed, 53 insertions, 14 deletions
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 )