From cbf726580fb3d6885f28a6ba9b86aeb907dea111 Mon Sep 17 00:00:00 2001 From: nexy7574 Date: Sun, 12 Oct 2025 22:31:07 +0100 Subject: [PATCH] fix: Kicks in !v12 are impossible --- src/core/matrix/state_res/event_auth.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/core/matrix/state_res/event_auth.rs b/src/core/matrix/state_res/event_auth.rs index c9c2fba3..7f6c2b98 100644 --- a/src/core/matrix/state_res/event_auth.rs +++ b/src/core/matrix/state_res/event_auth.rs @@ -1019,11 +1019,24 @@ where target_user_current_membership, MembershipState::Ban | MembershipState::Leave ) { - sender_creator - || (sender_power.filter(|&p| p < &power_levels.kick).is_some() - && sender_power - .filter(|&p| p > target_power.unwrap_or(&int!(0))) - .is_some()) + if sender_creator { + // sender is a creator + true + } else if sender_power.filter(|&p| p >= &power_levels.kick).is_none() { + // sender lacks kick power level + false + } else if let Some(sp) = sender_power { + if let Some(tp) = target_power { + // sender must have more power than target + sp > tp + } else { + // target has default power level + true + } + } else { + // sender has default power level + false + } } else { true };