diff options
-rw-r--r-- | synapse/api/auth.py | 5 | ||||
-rw-r--r-- | synapse/storage/__init__.py | 3 | ||||
-rw-r--r-- | synapse/storage/room.py | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/synapse/api/auth.py b/synapse/api/auth.py index e9e3279b9a..54ecbe5b3a 100644 --- a/synapse/api/auth.py +++ b/synapse/api/auth.py @@ -169,6 +169,11 @@ class Auth(object): ) _, kick_level = yield self.store.get_ops_levels(event.room_id) + if kick_level: + kick_level = int(kick_level) + else: + kick_level = 5 + if user_level < kick_level: raise AuthError( 403, "You cannot kick user %s." % target_user_id diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py index 7a441391f0..aadaab06e7 100644 --- a/synapse/storage/__init__.py +++ b/synapse/storage/__init__.py @@ -23,6 +23,7 @@ from synapse.api.events.room import ( RoomPowerLevelsEvent, RoomAddStateLevelEvent, RoomSendEventLevelEvent, + RoomOpsPowerLevelsEvent, ) from synapse.util.logutils import log_function @@ -140,6 +141,8 @@ class DataStore(RoomMemberStore, RoomStore, self._store_add_state_level(txn, event) elif event.type == RoomSendEventLevelEvent.TYPE: self._store_send_event_level(txn, event) + elif event.type == RoomOpsPowerLevelsEvent.TYPE: + self._store_ops_level(txn, event) vals = { "topological_ordering": event.depth, diff --git a/synapse/storage/room.py b/synapse/storage/room.py index 3ca07f4350..01ae190316 100644 --- a/synapse/storage/room.py +++ b/synapse/storage/room.py @@ -328,7 +328,7 @@ class RoomStore(SQLBaseStore): self._simple_insert_txn( txn, - "room_send_event_levels", + "room_ops_levels", content, ) |