summary refs log tree commit diff
diff options
context:
space:
mode:
authorWill Hunt <will@half-shot.uk>2019-08-28 16:31:40 +0100
committerGitHub <noreply@github.com>2019-08-28 16:31:40 +0100
commitc8fa620d7adb2da0638b80c62c2b695f2732191d (patch)
tree892a3f4e9d762454a3e3c31dda71fde0d76476e9
parentLet synctl use a config directory. (#5904) (diff)
parentRemoving entry for 5903 (diff)
downloadsynapse-c8fa620d7adb2da0638b80c62c2b695f2732191d.tar.xz
Merge pull request #5902 from matrix-org/hs/exempt-support-users-from-consent
Exempt support users from consent
-rw-r--r--changelog.d/5902.feature1
-rw-r--r--synapse/api/constants.py3
-rw-r--r--synapse/handlers/message.py5
-rw-r--r--synapse/storage/registration.py1
-rw-r--r--tests/storage/test_registration.py1
5 files changed, 9 insertions, 2 deletions
diff --git a/changelog.d/5902.feature b/changelog.d/5902.feature
new file mode 100644
index 0000000000..0660f65cfa
--- /dev/null
+++ b/changelog.d/5902.feature
@@ -0,0 +1 @@
+Users with the type of "support" or "bot" are no longer required to consent.
\ No newline at end of file
diff --git a/synapse/api/constants.py b/synapse/api/constants.py
index 3ffde0d7fc..f29bce560c 100644
--- a/synapse/api/constants.py
+++ b/synapse/api/constants.py
@@ -122,7 +122,8 @@ class UserTypes(object):
     """
 
     SUPPORT = "support"
-    ALL_USER_TYPES = (SUPPORT,)
+    BOT = "bot"
+    ALL_USER_TYPES = (SUPPORT, BOT)
 
 
 class RelationTypes(object):
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py
index a5e23c4caf..111f7c7e2f 100644
--- a/synapse/handlers/message.py
+++ b/synapse/handlers/message.py
@@ -24,7 +24,7 @@ from twisted.internet import defer
 from twisted.internet.defer import succeed
 
 from synapse import event_auth
-from synapse.api.constants import EventTypes, Membership, RelationTypes
+from synapse.api.constants import EventTypes, Membership, RelationTypes, UserTypes
 from synapse.api.errors import (
     AuthError,
     Codes,
@@ -469,6 +469,9 @@ class EventCreationHandler(object):
 
         u = yield self.store.get_user_by_id(user_id)
         assert u is not None
+        if u["user_type"] in (UserTypes.SUPPORT, UserTypes.BOT):
+            # support and bot users are not required to consent
+            return
         if u["appservice_id"] is not None:
             # users registered by an appservice are exempt
             return
diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py
index 9027b917c1..3f50324253 100644
--- a/synapse/storage/registration.py
+++ b/synapse/storage/registration.py
@@ -56,6 +56,7 @@ class RegistrationWorkerStore(SQLBaseStore):
                 "consent_server_notice_sent",
                 "appservice_id",
                 "creation_ts",
+                "user_type",
             ],
             allow_none=True,
             desc="get_user_by_id",
diff --git a/tests/storage/test_registration.py b/tests/storage/test_registration.py
index 0253c4ac05..4578cc3b60 100644
--- a/tests/storage/test_registration.py
+++ b/tests/storage/test_registration.py
@@ -49,6 +49,7 @@ class RegistrationStoreTestCase(unittest.TestCase):
                 "consent_server_notice_sent": None,
                 "appservice_id": None,
                 "creation_ts": 1000,
+                "user_type": None,
             },
             (yield self.store.get_user_by_id(self.user_id)),
         )