mirror of
https://github.com/element-hq/synapse.git
synced 2025-03-14 09:45:51 +00:00
Merge 331bc7c0fd
into 59a15da433
This commit is contained in:
commit
7f08e21780
2 changed files with 15 additions and 3 deletions
1
changelog.d/18238.feature
Normal file
1
changelog.d/18238.feature
Normal file
|
@ -0,0 +1 @@
|
|||
Server admins will see [soft failed](https://spec.matrix.org/v1.13/server-server-api/#soft-failure) events over the Client-Server API.
|
|
@ -48,7 +48,13 @@ from synapse.logging.opentracing import trace
|
|||
from synapse.storage.controllers import StorageControllers
|
||||
from synapse.storage.databases.main import DataStore
|
||||
from synapse.synapse_rust.events import event_visible_to_server
|
||||
from synapse.types import RetentionPolicy, StateMap, StrCollection, get_domain_from_id
|
||||
from synapse.types import (
|
||||
RetentionPolicy,
|
||||
StateMap,
|
||||
StrCollection,
|
||||
UserID,
|
||||
get_domain_from_id,
|
||||
)
|
||||
from synapse.types.state import StateFilter
|
||||
from synapse.util import Clock
|
||||
|
||||
|
@ -106,9 +112,14 @@ async def filter_events_for_client(
|
|||
of `user_id` at each event.
|
||||
"""
|
||||
# Filter out events that have been soft failed so that we don't relay them
|
||||
# to clients.
|
||||
# to clients, unless they're a server admin.
|
||||
events_before_filtering = events
|
||||
events = [e for e in events if not e.internal_metadata.is_soft_failed()]
|
||||
if filter_send_to_client and await storage.main.is_server_admin(
|
||||
UserID.from_string(user_id)
|
||||
):
|
||||
events = events_before_filtering
|
||||
else:
|
||||
events = [e for e in events if not e.internal_metadata.is_soft_failed()]
|
||||
if len(events_before_filtering) != len(events):
|
||||
if filtered_event_logger.isEnabledFor(logging.DEBUG):
|
||||
filtered_event_logger.debug(
|
||||
|
|
Loading…
Add table
Reference in a new issue