refactor incoming remote membership event validation

The structure is now the same as the validation we're adding for
outgoing remote membership.
This commit is contained in:
Olivia Lee 2025-12-30 13:20:16 -08:00 committed by Charles Hall
parent f38f2d4fab
commit f29aebbcf4

View file

@ -1778,39 +1778,34 @@ fn validate_remote_member_event(
membership: &MembershipState,
event: &CanonicalJsonObject,
) -> Result<()> {
let event_type = event.get("type").ok_or_else(|| {
Error::BadRequest(
let Some(event_type) = event.get("type") else {
return Err(Error::BadRequest(
ErrorKind::InvalidParam,
"Event missing type property",
)
})?;
if event_type.as_str() != Some(RoomMemberEventContent::TYPE) {
));
};
if event_type != &RoomMemberEventContent::TYPE {
return Err(Error::BadRequest(
ErrorKind::InvalidParam,
"Event is not a membership event",
));
}
let content: RoomMemberEventContent = serde_json::from_value(
event
.get("content")
.ok_or_else(|| {
Error::BadRequest(
let Some(content) =
event.get("content").and_then(|content| content.as_object())
else {
return Err(Error::BadRequest(
ErrorKind::InvalidParam,
"Event missing content property",
)
})?
.clone()
.into(),
)
.map_err(|_| {
Error::BadRequest(
"Event content property is missing or not an object",
));
};
let Some(event_membership) = content.get("membership") else {
return Err(Error::BadRequest(
ErrorKind::InvalidParam,
"Event content is empty or invalid",
)
})?;
if &content.membership != membership {
"Event content is missing membership property",
));
};
if event_membership != &membership.as_str() {
return Err(Error::BadRequest(
ErrorKind::InvalidParam,
"Not allowed to send a non-invite membership event to invite \