diff --git a/synapse/api/auth.py b/synapse/api/auth.py index e9e3279b9ad39de04c71d1b1f2ed086d193dbe33..54ecbe5b3a1b8a89cf16fb03bd5c4762960d22f7 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 7a441391f00ae4fd27fd6c8c6829bcfc177dfb6f..aadaab06e7d8f8c11fd99fbfbe945ee95e5a0c45 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 3ca07f4350999a32c5047cad85d20b4e171525f0..01ae19031605c551f6d921a3ce13aa308556acfe 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, )