mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2026-02-04 15:51:23 +01:00
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:
parent
f38f2d4fab
commit
f29aebbcf4
1 changed files with 19 additions and 24 deletions
|
|
@ -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(
|
||||
ErrorKind::InvalidParam,
|
||||
"Event missing content property",
|
||||
)
|
||||
})?
|
||||
.clone()
|
||||
.into(),
|
||||
)
|
||||
.map_err(|_| {
|
||||
Error::BadRequest(
|
||||
let Some(content) =
|
||||
event.get("content").and_then(|content| content.as_object())
|
||||
else {
|
||||
return Err(Error::BadRequest(
|
||||
ErrorKind::InvalidParam,
|
||||
"Event content is empty or invalid",
|
||||
)
|
||||
})?;
|
||||
|
||||
if &content.membership != membership {
|
||||
"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 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 \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue