diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py
index 15e90fdd4e..b02056dc63 100644
--- a/synapse/handlers/room.py
+++ b/synapse/handlers/room.py
@@ -52,7 +52,7 @@ from synapse.types import (
create_requester,
)
from synapse.util import stringutils
-from synapse.util.async_helpers import Linearizer
+from synapse.util.async_helpers import Linearizer, maybe_awaitable
from synapse.util.caches.response_cache import ResponseCache
from synapse.util.stringutils import parse_and_validate_server_name
from synapse.visibility import filter_events_for_client
@@ -1034,12 +1034,10 @@ class RoomContextHandler:
is_peeking = user.to_string() not in users
def filter_evts(events):
+ if use_admin_priviledge:
+ return maybe_awaitable(events)
return filter_events_for_client(
- self.storage,
- user.to_string(),
- events,
- is_peeking=is_peeking,
- use_admin_priviledge=use_admin_priviledge,
+ self.storage, user.to_string(), events, is_peeking=is_peeking
)
event = await self.store.get_event(
diff --git a/synapse/visibility.py b/synapse/visibility.py
index 80c304562d..2109e2f37f 100644
--- a/synapse/visibility.py
+++ b/synapse/visibility.py
@@ -53,7 +53,6 @@ async def filter_events_for_client(
is_peeking=False,
always_include_ids=frozenset(),
filter_send_to_client=True,
- use_admin_priviledge=False,
):
"""
Check which events a user is allowed to see. If the user can see the event but its
@@ -72,9 +71,6 @@ async def filter_events_for_client(
filter_send_to_client (bool): Whether we're checking an event that's going to be
sent to a client. This might not always be the case since this function can
also be called to check whether a user can see the state at a given point.
- use_admin_priviledge: if `True`, return all events, regardless
- of whether `user` has access to them. To be used **ONLY**
- from the admin API.
Returns:
list[synapse.events.EventBase]
@@ -83,23 +79,16 @@ async def filter_events_for_client(
# to clients.
events = [e for e in events if not e.internal_metadata.is_soft_failed()]
- types = None
- if use_admin_priviledge:
- # Administrators can access all events.
- types = ((EventTypes.RoomHistoryVisibility, ""), (EventTypes.Member, None))
- else:
- types = ((EventTypes.RoomHistoryVisibility, ""), (EventTypes.Member, user_id))
+ types = ((EventTypes.RoomHistoryVisibility, ""), (EventTypes.Member, user_id))
event_id_to_state = await storage.state.get_state_for_events(
frozenset(e.event_id for e in events),
state_filter=StateFilter.from_types(types),
)
- ignore_dict_content = None
- if not use_admin_priviledge:
- ignore_dict_content = await storage.main.get_global_account_data_by_type_for_user(
- AccountDataTypes.IGNORED_USER_LIST, user_id
- )
+ ignore_dict_content = await storage.main.get_global_account_data_by_type_for_user(
+ AccountDataTypes.IGNORED_USER_LIST, user_id
+ )
ignore_list = frozenset()
if ignore_dict_content:
@@ -195,12 +184,10 @@ async def filter_events_for_client(
if old_priority < new_priority:
visibility = prev_visibility
- membership = None
- if use_admin_priviledge:
- membership = Membership.JOIN
# likewise, if the event is the user's own membership event, use
# the 'most joined' membership
- elif event.type == EventTypes.Member and event.state_key == user_id:
+ membership = None
+ if event.type == EventTypes.Member and event.state_key == user_id:
membership = event.content.get("membership", None)
if membership not in MEMBERSHIP_PRIORITY:
membership = "leave"
|