diff options
author | Neil Johnson <neil@matrix.org> | 2018-11-28 11:24:57 +0000 |
---|---|---|
committer | Amber Brown <hawkowl@atleastfornow.net> | 2018-11-28 22:24:57 +1100 |
commit | 7039ece8fb633b97cd6166be636bae71fb3aa3c6 (patch) | |
tree | 0c90754b48070b8b489d9cdd624a806573205cdd /synapse/handlers/register.py | |
parent | Report combined coverage to codecov (#4225) (diff) | |
download | synapse-7039ece8fb633b97cd6166be636bae71fb3aa3c6.tar.xz |
Neilj/fix autojoin (#4223)
* Fix auto join failures for servers that require user consent * Fix auto join failures for servers that require user consent
Diffstat (limited to 'synapse/handlers/register.py')
-rw-r--r-- | synapse/handlers/register.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index d2beb275cf..015909bb26 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -217,7 +217,19 @@ class RegistrationHandler(BaseHandler): user_id = None token = None attempts += 1 + if not self.hs.config.user_consent_at_registration: + yield self._auto_join_rooms(user_id) + defer.returnValue((user_id, token)) + + @defer.inlineCallbacks + def _auto_join_rooms(self, user_id): + """Automatically joins users to auto join rooms - creating the room in the first place + if the user is the first to be created. + + Args: + user_id(str): The user to join + """ # auto-join the user to any rooms we're supposed to dump them into fake_requester = create_requester(user_id) @@ -226,7 +238,6 @@ class RegistrationHandler(BaseHandler): if self.hs.config.autocreate_auto_join_rooms: count = yield self.store.count_all_users() should_auto_create_rooms = count == 1 - for r in self.hs.config.auto_join_rooms: try: if should_auto_create_rooms: @@ -256,7 +267,15 @@ class RegistrationHandler(BaseHandler): except Exception as e: logger.error("Failed to join new user to %r: %r", r, e) - defer.returnValue((user_id, token)) + @defer.inlineCallbacks + def post_consent_actions(self, user_id): + """A series of registration actions that can only be carried out once consent + has been granted + + Args: + user_id (str): The user to join + """ + yield self._auto_join_rooms(user_id) @defer.inlineCallbacks def appservice_register(self, user_localpart, as_token): |