diff options
author | Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | 2023-03-21 13:24:03 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-21 13:24:03 +0000 |
commit | ec9224bf9a7bebb6c429ef45e0d1a293f0986836 (patch) | |
tree | d140e37a1f09dabca17f85377639cacfeae326e2 /synapse | |
parent | Make `EventHandler.get_event` return `None` when the requested event is not f... (diff) | |
download | synapse-ec9224bf9a7bebb6c429ef45e0d1a293f0986836.tar.xz |
Make `POST /_matrix/client/v3/rooms/{roomId}/report/{eventId}` endpoint return 404 if event exists, but the user lacks access (#15300)
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/rest/client/report_event.py | 16 | ||||
-rw-r--r-- | synapse/storage/databases/main/events_worker.py | 1 |
2 files changed, 11 insertions, 6 deletions
diff --git a/synapse/rest/client/report_event.py b/synapse/rest/client/report_event.py index 9be5860221..ac1a63ca27 100644 --- a/synapse/rest/client/report_event.py +++ b/synapse/rest/client/report_event.py @@ -16,7 +16,7 @@ import logging from http import HTTPStatus from typing import TYPE_CHECKING, Tuple -from synapse.api.errors import Codes, NotFoundError, SynapseError +from synapse.api.errors import AuthError, Codes, NotFoundError, SynapseError from synapse.http.server import HttpServer from synapse.http.servlet import RestServlet, parse_json_object_from_request from synapse.http.site import SynapseRequest @@ -62,12 +62,18 @@ class ReportEventRestServlet(RestServlet): Codes.BAD_JSON, ) - event = await self._event_handler.get_event( - requester.user, room_id, event_id, show_redacted=False - ) + try: + event = await self._event_handler.get_event( + requester.user, room_id, event_id, show_redacted=False + ) + except AuthError: + # The event exists, but this user is not allowed to access this event. + event = None + if event is None: raise NotFoundError( - "Unable to report event: it does not exist or you aren't able to see it." + "Unable to report event: " + "it does not exist or you aren't able to see it." ) await self.store.add_event_report( diff --git a/synapse/storage/databases/main/events_worker.py b/synapse/storage/databases/main/events_worker.py index 20b7a68362..0cf46626d2 100644 --- a/synapse/storage/databases/main/events_worker.py +++ b/synapse/storage/databases/main/events_worker.py @@ -805,7 +805,6 @@ class EventsWorkerStore(SQLBaseStore): # the events have been redacted, and if so pulling the redaction event # out of the database to check it. # - missing_events = {} try: # Try to fetch from any external cache. We already checked the # in-memory cache above. |