summary refs log tree commit diff
path: root/synapse/handlers
diff options
context:
space:
mode:
authorLuke Barnard <luke@matrix.org>2017-11-16 16:32:58 +0000
committerLuke Barnard <luke@matrix.org>2017-11-16 16:44:55 +0000
commit97bd18af4ee368a5fe8bf8fb06d0299f6b2c1cfd (patch)
treee96e70c383fbc34b0cb6a12bb6208c6268816235 /synapse/handlers
parentMerge pull request #2661 from matrix-org/rav/statereadstore (diff)
downloadsynapse-97bd18af4ee368a5fe8bf8fb06d0299f6b2c1cfd.tar.xz
Add automagical AS Publicised Group(s)
via registration file "users" namespace:

```YAML
...
namespaces:
  users:
    - exclusive: true
      regex: '.*luke.*'
      group_id: '+all_the_lukes:hsdomain'
...
```

This is part of giving App Services their own groups for matching users. With this, ghost users will be given the appeareance that they are in a group and that they have publicised the fact, but _only_ from the perspective of the `get_publicised_groups_for_user` API.
Diffstat (limited to 'synapse/handlers')
-rw-r--r--synapse/handlers/groups_local.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/synapse/handlers/groups_local.py b/synapse/handlers/groups_local.py
index da00aeb0f4..5cc4b86afd 100644
--- a/synapse/handlers/groups_local.py
+++ b/synapse/handlers/groups_local.py
@@ -375,6 +375,12 @@ class GroupsLocalHandler(object):
     def get_publicised_groups_for_user(self, user_id):
         if self.hs.is_mine_id(user_id):
             result = yield self.store.get_publicised_groups_for_user(user_id)
+
+            # Check AS associated groups for this user - this depends on the
+            # RegExps in the AS registration file (under `users`)
+            for app_service in self.store.get_app_services():
+                result.extend(app_service.get_groups_for_user(user_id))
+
             defer.returnValue({"groups": result})
         else:
             result = yield self.transport_client.get_publicised_groups_for_user(