diff options
author | Erik Johnston <erik@matrix.org> | 2014-10-17 21:02:16 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-10-17 21:02:16 +0100 |
commit | 449739e6a364759a86f73417626af49d6a794e3d (patch) | |
tree | 04b2f39c91ec6098ffe3b380442787ac3ce2908f /synapse/rest/directory.py | |
parent | Merge branch 'release-v0.3.4' of github.com:matrix-org/synapse (diff) | |
parent | Check that we have auth headers and fail nicely (diff) | |
download | synapse-449739e6a364759a86f73417626af49d6a794e3d.tar.xz |
Merge branch 'release-v0.4.0' of github.com:matrix-org/synapse
Diffstat (limited to 'synapse/rest/directory.py')
-rw-r--r-- | synapse/rest/directory.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/synapse/rest/directory.py b/synapse/rest/directory.py index 31849246a1..6c260e7102 100644 --- a/synapse/rest/directory.py +++ b/synapse/rest/directory.py @@ -16,7 +16,7 @@ from twisted.internet import defer -from synapse.api.errors import SynapseError, Codes +from synapse.api.errors import AuthError, SynapseError, Codes from base import RestServlet, client_path_pattern import json @@ -81,6 +81,24 @@ class ClientDirectoryServer(RestServlet): defer.returnValue((200, {})) + @defer.inlineCallbacks + def on_DELETE(self, request, room_alias): + user = yield self.auth.get_user_by_req(request) + + is_admin = yield self.auth.is_server_admin(user) + if not is_admin: + raise AuthError(403, "You need to be a server admin") + + dir_handler = self.handlers.directory_handler + + room_alias = self.hs.parse_roomalias(urllib.unquote(room_alias)) + + yield dir_handler.delete_association( + user.to_string(), room_alias + ) + + defer.returnValue((200, {})) + def _parse_json(request): try: |