Remove RedactAllowed enum in favor of bool
This commit is contained in:
parent
3cc4ae2bf7
commit
8ca1726e98
@ -19,16 +19,6 @@ use crate::{
|
|||||||
Error, Result, StateMap,
|
Error, Result, StateMap,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Represents the 3 event redaction outcomes.
|
|
||||||
pub enum RedactAllowed {
|
|
||||||
/// The event is the users so redaction can take place.
|
|
||||||
OwnEvent,
|
|
||||||
/// The user can easily redact the event.
|
|
||||||
CanRedact,
|
|
||||||
/// The user does not have enough power to redact this event.
|
|
||||||
No,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// For the given event `kind` what are the relevant auth events
|
/// For the given event `kind` what are the relevant auth events
|
||||||
/// that are needed to authenticate this `content`.
|
/// that are needed to authenticate this `content`.
|
||||||
pub fn auth_types_for_event(
|
pub fn auth_types_for_event(
|
||||||
@ -274,7 +264,7 @@ pub fn auth_check(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if incoming_event.kind() == EventType::RoomRedaction {
|
if incoming_event.kind() == EventType::RoomRedaction {
|
||||||
if let RedactAllowed::No = check_redaction(room_version, incoming_event, &auth_events)? {
|
if !check_redaction(room_version, incoming_event, &auth_events)? {
|
||||||
return Ok(false);
|
return Ok(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -639,13 +629,13 @@ pub fn check_redaction(
|
|||||||
room_version: &RoomVersionId,
|
room_version: &RoomVersionId,
|
||||||
redaction_event: &StateEvent,
|
redaction_event: &StateEvent,
|
||||||
auth_events: &StateMap<StateEvent>,
|
auth_events: &StateMap<StateEvent>,
|
||||||
) -> Result<RedactAllowed> {
|
) -> Result<bool> {
|
||||||
let user_level = get_user_power_level(redaction_event.sender(), auth_events);
|
let user_level = get_user_power_level(redaction_event.sender(), auth_events);
|
||||||
let redact_level = get_named_level(auth_events, "redact", 50);
|
let redact_level = get_named_level(auth_events, "redact", 50);
|
||||||
|
|
||||||
if user_level >= redact_level {
|
if user_level >= redact_level {
|
||||||
tracing::info!("redaction allowed via power levels");
|
tracing::info!("redaction allowed via power levels");
|
||||||
return Ok(RedactAllowed::CanRedact);
|
return Ok(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FROM SPEC:
|
// FROM SPEC:
|
||||||
@ -662,11 +652,11 @@ pub fn check_redaction(
|
|||||||
== redaction_event.redacts().and_then(|id| id.server_name())
|
== redaction_event.redacts().and_then(|id| id.server_name())
|
||||||
{
|
{
|
||||||
tracing::info!("redaction event allowed via room version 1 rules");
|
tracing::info!("redaction event allowed via room version 1 rules");
|
||||||
return Ok(RedactAllowed::OwnEvent);
|
return Ok(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(RedactAllowed::No)
|
Ok(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check that the member event matches `state`.
|
/// Check that the member event matches `state`.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user