state-res: Refactor Knock membership transition

This commit is contained in:
Kévin Commaille 2024-02-28 10:41:30 +01:00 committed by Kévin Commaille
parent f24cae17f5
commit a8f1440698

View File

@ -700,29 +700,27 @@ fn valid_membership_change(
{ {
warn!("Join rule is not set to knock or knock_restricted, knocking is not allowed"); warn!("Join rule is not set to knock or knock_restricted, knocking is not allowed");
false false
} else { } else if sender != target_user {
// 2. If `sender` does not match `state_key`, reject. // 2. If `sender` does not match `state_key`, reject.
warn!(
?sender,
?target_user,
"Can't make another user knock, sender did not match target"
);
false
} else if matches!(
sender_membership,
MembershipState::Ban | MembershipState::Invite | MembershipState::Join
) {
// 3. If the `sender`'s current membership is not `ban`, `invite`, or `join`, allow. // 3. If the `sender`'s current membership is not `ban`, `invite`, or `join`, allow.
// 4. Otherwise, reject. // 4. Otherwise, reject.
if sender != target_user { warn!(
warn!( ?target_user_membership_event_id,
?sender, "Membership state of ban, invite or join are invalid",
?target_user, );
"Can't make another user join, sender did not match target" false
); } else {
false true
} else if matches!(
sender_membership,
MembershipState::Ban | MembershipState::Invite | MembershipState::Join
) {
warn!(
?target_user_membership_event_id,
"Membership state of ban, invite or join are invalid",
);
false
} else {
true
}
} }
} }
_ => { _ => {