mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2025-09-30 18:42:05 +00:00
fix(hydra): Fix unknown join rule processing, again
This commit is contained in:
parent
b00f6ffbed
commit
ccb112ef05
1 changed files with 40 additions and 13 deletions
|
@ -779,18 +779,30 @@ where
|
||||||
false
|
false
|
||||||
} else {
|
} else {
|
||||||
match join_rules {
|
match join_rules {
|
||||||
| JoinRule::Invite if !membership_allows_join => {
|
| JoinRule::Invite =>
|
||||||
warn!("Join rule is invite but membership does not allow join");
|
if !membership_allows_join {
|
||||||
false
|
warn!(
|
||||||
},
|
membership=?target_user_current_membership,
|
||||||
|
"Join rule is invite but membership does not allow join"
|
||||||
|
);
|
||||||
|
false
|
||||||
|
} else {
|
||||||
|
true
|
||||||
|
},
|
||||||
| JoinRule::Knock if !room_version.allow_knocking => {
|
| JoinRule::Knock if !room_version.allow_knocking => {
|
||||||
warn!("Join rule is knock but room version does not allow knocking");
|
warn!("Join rule is knock but room version does not allow knocking");
|
||||||
false
|
false
|
||||||
},
|
},
|
||||||
| JoinRule::Knock if !membership_allows_join => {
|
| JoinRule::Knock =>
|
||||||
warn!("Join rule is knock but membership does not allow join");
|
if !membership_allows_join {
|
||||||
false
|
warn!(
|
||||||
},
|
membership=?target_user_current_membership,
|
||||||
|
"Join rule is knock but membership does not allow join"
|
||||||
|
);
|
||||||
|
false
|
||||||
|
} else {
|
||||||
|
true
|
||||||
|
},
|
||||||
| JoinRule::KnockRestricted(_) if !room_version.knock_restricted_join_rule =>
|
| JoinRule::KnockRestricted(_) if !room_version.knock_restricted_join_rule =>
|
||||||
{
|
{
|
||||||
warn!(
|
warn!(
|
||||||
|
@ -798,11 +810,22 @@ where
|
||||||
);
|
);
|
||||||
false
|
false
|
||||||
},
|
},
|
||||||
| JoinRule::KnockRestricted(_) if !membership_allows_join => {
|
| JoinRule::KnockRestricted(_) => {
|
||||||
warn!("Join rule is knock_restricted but membership does not allow join");
|
let valid_join = user_for_join_auth_is_valid
|
||||||
false
|
|| sender_membership == MembershipState::Join;
|
||||||
|
if membership_allows_join || valid_join {
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
warn!(
|
||||||
|
membership=?target_user_current_membership,
|
||||||
|
"Join rule is a restricted one, but no valid authorising user \
|
||||||
|
was given and the sender's current membership does not permit \
|
||||||
|
a join transition"
|
||||||
|
);
|
||||||
|
false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
| JoinRule::Restricted(_) | JoinRule::KnockRestricted(_) =>
|
| JoinRule::Restricted(_) =>
|
||||||
if !user_for_join_auth_is_valid
|
if !user_for_join_auth_is_valid
|
||||||
&& sender_membership != MembershipState::Join
|
&& sender_membership != MembershipState::Join
|
||||||
{
|
{
|
||||||
|
@ -816,7 +839,11 @@ where
|
||||||
},
|
},
|
||||||
| JoinRule::Public => true,
|
| JoinRule::Public => true,
|
||||||
| _ => {
|
| _ => {
|
||||||
warn!("Unknown join rule doesn't allow joining");
|
warn!(
|
||||||
|
join_rule=?join_rules,
|
||||||
|
membership=?target_user_current_membership,
|
||||||
|
"Unknown join rule doesn't allow joining, or the rule's conditions were not met"
|
||||||
|
);
|
||||||
false
|
false
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue