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; 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. /// 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()) Ok(unban_user::v3::Response::new())
} }
/// # `POST /_matrix/client/r0/rooms/{roomId}/forget` /// # `POST /_matrix/client/v3/rooms/{roomId}/forget`
/// ///
/// Forgets about a room. /// Forgets about a room.
/// ///

View file

@ -5,7 +5,7 @@ use ruma::{
int, int,
}; };
/// # `POST /_matrix/client/r0/rooms/{roomId}/report/{eventId}` /// # `POST /_matrix/client/v3/rooms/{roomId}/report/{eventId}`
/// ///
/// Reports an inappropriate event to homeserver admins /// 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)) { if let Some(true) = body.score.map(|s| s > int!(0) || s < int!(-100)) {
return Err(Error::BadRequest( return Err(Error::BadRequest(
ErrorKind::InvalidParam, ErrorKind::InvalidParam,