diff options
author | Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | 2019-08-06 13:33:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-06 13:33:55 +0100 |
commit | edeae53221f35a8308c3946369c2b433759091c5 (patch) | |
tree | f13c1fd869ee15ce942be40e4b6f4b97022ec797 | |
parent | Account validity: allow defining HTML templates to serve the us… (#5807) (diff) | |
download | synapse-edeae53221f35a8308c3946369c2b433759091c5.tar.xz |
Return 404 instead of 403 when retrieving an event without perms (#5798)
Part of fixing matrix-org/sytest#652 Sytest PR: matrix-org/sytest#667
-rw-r--r-- | changelog.d/5798.bugfix | 1 | ||||
-rw-r--r-- | synapse/rest/client/v1/room.py | 14 |
2 files changed, 12 insertions, 3 deletions
diff --git a/changelog.d/5798.bugfix b/changelog.d/5798.bugfix new file mode 100644 index 0000000000..7db2c37af5 --- /dev/null +++ b/changelog.d/5798.bugfix @@ -0,0 +1 @@ +Return 404 instead of 403 when accessing /rooms/{roomId}/event/{eventId} for an event without the appropriate permissions. diff --git a/synapse/rest/client/v1/room.py b/synapse/rest/client/v1/room.py index 6fe1eddcce..4b2344e696 100644 --- a/synapse/rest/client/v1/room.py +++ b/synapse/rest/client/v1/room.py @@ -568,14 +568,22 @@ class RoomEventServlet(RestServlet): @defer.inlineCallbacks def on_GET(self, request, room_id, event_id): requester = yield self.auth.get_user_by_req(request, allow_guest=True) - event = yield self.event_handler.get_event(requester.user, room_id, event_id) + try: + event = yield self.event_handler.get_event( + requester.user, room_id, event_id + ) + except AuthError: + # This endpoint is supposed to return a 404 when the requester does + # not have permission to access the event + # https://matrix.org/docs/spec/client_server/r0.5.0#get-matrix-client-r0-rooms-roomid-event-eventid + raise SynapseError(404, "Event not found.", errcode=Codes.NOT_FOUND) time_now = self.clock.time_msec() if event: event = yield self._event_serializer.serialize_event(event, time_now) return (200, event) - else: - return (404, "Event not found.") + + return SynapseError(404, "Event not found.", errcode=Codes.NOT_FOUND) class RoomEventContextServlet(RestServlet): |