require sender_user being in the reporting room for /report events

Matrix 1.8 change:
https://spec.matrix.org/v1.9/client-server-api/#post_matrixclientv3roomsroomidreporteventid

Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
strawberry 2024-01-16 19:47:40 -05:00 committed by June
parent efa6308172
commit a85ebdeaa0
3 changed files with 17 additions and 3 deletions

View file

@ -19,7 +19,7 @@ use register::RegistrationKind;
const RANDOM_USER_ID_LENGTH: usize = 10;
/// # `GET /_matrix/client/r0/register/available`
/// # `GET /_matrix/client/v3/register/available`
///
/// Checks if a username is valid and available on this server.
///

View file

@ -361,7 +361,7 @@ pub async fn unban_user_route(
Ok(unban_user::v3::Response::new())
}
/// # `POST /_matrix/client/r0/rooms/{roomId}/forget`
/// # `POST /_matrix/client/v3/rooms/{roomId}/forget`
///
/// Forgets about a room.
///

View file

@ -5,7 +5,7 @@ use ruma::{
int,
};
/// # `POST /_matrix/client/r0/rooms/{roomId}/report/{eventId}`
/// # `POST /_matrix/client/v3/rooms/{roomId}/report/{eventId}`
///
/// Reports an inappropriate event to homeserver admins
///
@ -24,6 +24,20 @@ pub async fn report_event_route(
}
};
// check if reporting user is in the reporting room
if !services()
.rooms
.state_cache
.room_members(&pdu.room_id)
.filter_map(|r| r.ok())
.any(|user_id| user_id == *sender_user)
{
return Err(Error::BadRequest(
ErrorKind::NotFound,
"You are not in the room you are reporting.",
));
}
if let Some(true) = body.score.map(|s| s > int!(0) || s < int!(-100)) {
return Err(Error::BadRequest(
ErrorKind::InvalidParam,