diff options
author | Travis Ralston <travpc@gmail.com> | 2020-08-18 15:21:30 -0600 |
---|---|---|
committer | Travis Ralston <travpc@gmail.com> | 2020-08-18 15:21:30 -0600 |
commit | b024acffeaf6013db65f439c29927fd9030b274f (patch) | |
tree | dd52f7476bb673a338bc47cdc5c91c0c2ac81cc8 /synapse/rest/client/v2_alpha/groups.py | |
parent | Add a link to the matrix-synapse-rest-password-provider. (#8111) (diff) | |
download | synapse-travis/group-admin.tar.xz |
Add rudimentary API for promoting/demoting other people in a group github/travis/group-admin travis/group-admin
For https://github.com/matrix-org/synapse/issues/2855 (initial)
Diffstat (limited to 'synapse/rest/client/v2_alpha/groups.py')
-rw-r--r-- | synapse/rest/client/v2_alpha/groups.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/synapse/rest/client/v2_alpha/groups.py b/synapse/rest/client/v2_alpha/groups.py index d84a6d7e11..1efe60f3a7 100644 --- a/synapse/rest/client/v2_alpha/groups.py +++ b/synapse/rest/client/v2_alpha/groups.py @@ -548,6 +548,31 @@ class GroupAdminUsersKickServlet(RestServlet): return 200, result +class GroupAdminChangeAdminServlet(RestServlet): + """Promote or demote a user in the group + """ + + PATTERNS = client_patterns( + "/groups/(?P<group_id>[^/]*)/admin/users/admins/(?P<user_id>[^/]*)$" + ) + + def __init__(self, hs): + super(GroupAdminChangeAdminServlet, self).__init__() + self.auth = hs.get_auth() + self.clock = hs.get_clock() + self.groups_handler = hs.get_groups_local_handler() + + async def on_POST(self, request, group_id, user_id): + requester = await self.auth.get_user_by_req(request) + requester_user_id = requester.user.to_string() + + content = parse_json_object_from_request(request) + want_admin = content["is_admin"] + result = await self.groups_handler.change_user_admin_in_group( + group_id, user_id, want_admin, requester_user_id, content + ) + + return 200, result class GroupSelfLeaveServlet(RestServlet): """Leave a joined group @@ -722,6 +747,7 @@ def register_servlets(hs, http_server): GroupAdminRoomsConfigServlet(hs).register(http_server) GroupAdminUsersInviteServlet(hs).register(http_server) GroupAdminUsersKickServlet(hs).register(http_server) + GroupAdminChangeAdminServlet(hs).register(http_server) GroupSelfLeaveServlet(hs).register(http_server) GroupSelfJoinServlet(hs).register(http_server) GroupSelfAcceptInviteServlet(hs).register(http_server) |