state-res: Add more information to warnings
This commit is contained in:
parent
3a0ee7740f
commit
e31b4d5c98
@ -332,7 +332,8 @@ pub fn valid_membership_change<E: Event>(
|
|||||||
})?;
|
})?;
|
||||||
|
|
||||||
let key = (EventType::RoomPowerLevels, "".into());
|
let key = (EventType::RoomPowerLevels, "".into());
|
||||||
let power_levels = auth_events.get(&key).map_or_else(
|
let power_levels_event = auth_events.get(&key);
|
||||||
|
let power_levels = power_levels_event.map_or_else(
|
||||||
|| Ok::<_, Error>(PowerLevelsEventContent::default()),
|
|| Ok::<_, Error>(PowerLevelsEventContent::default()),
|
||||||
|power_levels| {
|
|power_levels| {
|
||||||
serde_json::from_value::<PowerLevelsEventContent>(power_levels.content())
|
serde_json::from_value::<PowerLevelsEventContent>(power_levels.content())
|
||||||
@ -369,7 +370,10 @@ pub fn valid_membership_change<E: Event>(
|
|||||||
warn!("Can't make other user join");
|
warn!("Can't make other user join");
|
||||||
false
|
false
|
||||||
} else if let MembershipState::Ban = current_membership {
|
} else if let MembershipState::Ban = current_membership {
|
||||||
warn!("Banned user can't join");
|
warn!(
|
||||||
|
"Banned user can't join\nCurrent user state: {:?}",
|
||||||
|
current.map(|e| e.event_id())
|
||||||
|
);
|
||||||
false
|
false
|
||||||
} else {
|
} else {
|
||||||
let allow = join_rules == JoinRule::Invite
|
let allow = join_rules == JoinRule::Invite
|
||||||
@ -378,7 +382,9 @@ pub fn valid_membership_change<E: Event>(
|
|||||||
|| join_rules == JoinRule::Public;
|
|| join_rules == JoinRule::Public;
|
||||||
|
|
||||||
if !allow {
|
if !allow {
|
||||||
warn!("Can't join if join rules is not public and user is not invited/joined");
|
warn!("Can't join if join rules is not public and user is not invited/joined\nJoin Rules: {:?}\nCurrent user state: {:?}",
|
||||||
|
join_rules_event.map(|e| e.event_id()),
|
||||||
|
current.map(|e| e.event_id()));
|
||||||
}
|
}
|
||||||
allow
|
allow
|
||||||
}
|
}
|
||||||
@ -386,7 +392,10 @@ pub fn valid_membership_change<E: Event>(
|
|||||||
// If content has third_party_invite key
|
// If content has third_party_invite key
|
||||||
if let Some(Ok(tp_id)) = third_party_invite {
|
if let Some(Ok(tp_id)) = third_party_invite {
|
||||||
if current_membership == MembershipState::Ban {
|
if current_membership == MembershipState::Ban {
|
||||||
warn!("Can't invite banned user");
|
warn!(
|
||||||
|
"Can't invite banned user\nCurrent user state: {:?}",
|
||||||
|
current.map(|e| e.event_id())
|
||||||
|
);
|
||||||
false
|
false
|
||||||
} else {
|
} else {
|
||||||
let allow = verify_third_party_invite(
|
let allow = verify_third_party_invite(
|
||||||
@ -405,13 +414,18 @@ pub fn valid_membership_change<E: Event>(
|
|||||||
|| current_membership == MembershipState::Ban
|
|| current_membership == MembershipState::Ban
|
||||||
{
|
{
|
||||||
warn!(
|
warn!(
|
||||||
"Can't invite user if sender not joined or the user is currently joined or banned"
|
"Can't invite user if sender not joined or the user is currently joined or banned\nCurrent user state: {:?}\nSender user state: {:?}",
|
||||||
|
current.map(|e| e.event_id()),
|
||||||
|
sender.map(|e| e.event_id())
|
||||||
);
|
);
|
||||||
false
|
false
|
||||||
} else {
|
} else {
|
||||||
let allow = sender_power.filter(|&p| p >= &power_levels.invite).is_some();
|
let allow = sender_power.filter(|&p| p >= &power_levels.invite).is_some();
|
||||||
if !allow {
|
if !allow {
|
||||||
warn!("User does not have enough power to invite");
|
warn!("User does not have enough power to invite\nCurrent user state: {:?}\nPower levels: {:?}",
|
||||||
|
current.map(|e| e.event_id()),
|
||||||
|
power_levels_event.map(|e| e.event_id())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
allow
|
allow
|
||||||
}
|
}
|
||||||
@ -420,32 +434,47 @@ pub fn valid_membership_change<E: Event>(
|
|||||||
let allow = current_membership == MembershipState::Join
|
let allow = current_membership == MembershipState::Join
|
||||||
|| current_membership == MembershipState::Invite;
|
|| current_membership == MembershipState::Invite;
|
||||||
if !allow {
|
if !allow {
|
||||||
warn!("Can't leave if not invited or joined");
|
warn!(
|
||||||
|
"Can't leave if not invited or joined\nCurrent user state: {:?}",
|
||||||
|
current.map(|e| e.event_id()),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
allow
|
allow
|
||||||
} else if sender_membership != MembershipState::Join
|
} else if sender_membership != MembershipState::Join
|
||||||
|| current_membership == MembershipState::Ban
|
|| current_membership == MembershipState::Ban
|
||||||
&& sender_power.filter(|&p| p < &power_levels.ban).is_some()
|
&& sender_power.filter(|&p| p < &power_levels.ban).is_some()
|
||||||
{
|
{
|
||||||
warn!("Can't kick if sender not joined or user is already banned");
|
warn!("Can't kick if sender not joined or user is already banned\nCurrent user state: {:?}\nSender user state: {:?}",
|
||||||
|
current.map(|e| e.event_id()),
|
||||||
|
sender.map(|e| e.event_id())
|
||||||
|
);
|
||||||
false
|
false
|
||||||
} else {
|
} else {
|
||||||
let allow = sender_power.filter(|&p| p >= &power_levels.kick).is_some()
|
let allow = sender_power.filter(|&p| p >= &power_levels.kick).is_some()
|
||||||
&& target_power < sender_power;
|
&& target_power < sender_power;
|
||||||
if !allow {
|
if !allow {
|
||||||
warn!("User does not have enough power to kick");
|
warn!("User does not have enough power to kick\nCurrent user state: {:?}\nPower levels: {:?}",
|
||||||
|
current.map(|e| e.event_id()),
|
||||||
|
power_levels_event.map(|e| e.event_id())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
allow
|
allow
|
||||||
}
|
}
|
||||||
} else if target_membership == MembershipState::Ban {
|
} else if target_membership == MembershipState::Ban {
|
||||||
if sender_membership != MembershipState::Join {
|
if sender_membership != MembershipState::Join {
|
||||||
warn!("Can't ban user if sender is not joined");
|
warn!(
|
||||||
|
"Can't ban user if sender is not joined\nSender user state: {:?}",
|
||||||
|
sender.map(|e| e.event_id())
|
||||||
|
);
|
||||||
false
|
false
|
||||||
} else {
|
} else {
|
||||||
let allow = sender_power.filter(|&p| p >= &power_levels.ban).is_some()
|
let allow = sender_power.filter(|&p| p >= &power_levels.ban).is_some()
|
||||||
&& target_power < sender_power;
|
&& target_power < sender_power;
|
||||||
if !allow {
|
if !allow {
|
||||||
warn!("User does not have enough power to ban");
|
warn!("User does not have enough power to ban\nCurrent user state: {:?}\nPower levels: {:?}",
|
||||||
|
current.map(|e| e.event_id()),
|
||||||
|
power_levels_event.map(|e| e.event_id())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
allow
|
allow
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user