mirror of
https://github.com/element-hq/synapse
synced 2024-08-19 03:20:52 +00:00
Make context.auth_events grap auth events from current state. Otherwise auth is wrong.
This commit is contained in:
parent
ab8229479b
commit
ea8590cf66
2 changed files with 12 additions and 18 deletions
|
@ -28,6 +28,12 @@ import logging
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
AuthEventTypes = (
|
||||
EventTypes.Create, EventTypes.Member, EventTypes.PowerLevels,
|
||||
EventTypes.JoinRules,
|
||||
)
|
||||
|
||||
|
||||
class Auth(object):
|
||||
|
||||
def __init__(self, hs):
|
||||
|
@ -427,7 +433,7 @@ class Auth(object):
|
|||
context.auth_events = {
|
||||
k: v
|
||||
for k, v in context.current_state.items()
|
||||
if v.event_id in auth_ids
|
||||
if v.type in AuthEventTypes
|
||||
}
|
||||
|
||||
def compute_auth_events(self, event, current_state):
|
||||
|
|
|
@ -21,6 +21,7 @@ from synapse.util.async import run_on_reactor
|
|||
from synapse.util.expiringcache import ExpiringCache
|
||||
from synapse.api.constants import EventTypes
|
||||
from synapse.api.errors import AuthError
|
||||
from synapse.api.auth import AuthEventTypes
|
||||
from synapse.events.snapshot import EventContext
|
||||
|
||||
from collections import namedtuple
|
||||
|
@ -38,12 +39,6 @@ def _get_state_key_from_event(event):
|
|||
KeyStateTuple = namedtuple("KeyStateTuple", ("context", "type", "state_key"))
|
||||
|
||||
|
||||
AuthEventTypes = (
|
||||
EventTypes.Create, EventTypes.Member, EventTypes.PowerLevels,
|
||||
EventTypes.JoinRules,
|
||||
)
|
||||
|
||||
|
||||
SIZE_OF_CACHE = 1000
|
||||
EVICTION_TIMEOUT_SECONDS = 20
|
||||
|
||||
|
@ -187,17 +182,10 @@ class StateHandler(object):
|
|||
replaces = context.current_state[key]
|
||||
event.unsigned["replaces_state"] = replaces.event_id
|
||||
|
||||
if hasattr(event, "auth_events") and event.auth_events:
|
||||
auth_ids = self.hs.get_auth().compute_auth_events(
|
||||
event, context.current_state
|
||||
)
|
||||
context.auth_events = {
|
||||
k: v
|
||||
for k, v in context.current_state.items()
|
||||
if v.event_id in auth_ids
|
||||
}
|
||||
else:
|
||||
context.auth_events = {}
|
||||
context.auth_events = {
|
||||
k: e for k, e in context.current_state.items()
|
||||
if k[0] in AuthEventTypes
|
||||
}
|
||||
|
||||
context.prev_state_events = prev_state
|
||||
defer.returnValue(context)
|
||||
|
|
Loading…
Reference in a new issue