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,21 +700,20 @@ 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.
// 3. If the `sender`'s current membership is not `ban`, `invite`, or `join`, allow.
// 4. Otherwise, reject.
if sender != target_user {
warn!( warn!(
?sender, ?sender,
?target_user, ?target_user,
"Can't make another user join, sender did not match target" "Can't make another user knock, sender did not match target"
); );
false false
} else if matches!( } else if matches!(
sender_membership, sender_membership,
MembershipState::Ban | MembershipState::Invite | MembershipState::Join MembershipState::Ban | MembershipState::Invite | MembershipState::Join
) { ) {
// 3. If the `sender`'s current membership is not `ban`, `invite`, or `join`, allow.
// 4. Otherwise, reject.
warn!( warn!(
?target_user_membership_event_id, ?target_user_membership_event_id,
"Membership state of ban, invite or join are invalid", "Membership state of ban, invite or join are invalid",
@ -724,7 +723,6 @@ fn valid_membership_change(
true true
} }
} }
}
_ => { _ => {
warn!("Unknown membership transition"); warn!("Unknown membership transition");
false false