check if invited user is an admin before rejecting instead

i think this makes more sense tbh than what synapse does

Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
strawberry 2024-03-02 21:54:16 -05:00 committed by June
parent 34e8fd38cf
commit 608aa83ed2
4 changed files with 16 additions and 12 deletions

View file

@ -1845,14 +1845,6 @@ pub async fn create_invite_route(
.as_ref()
.expect("server is authenticated");
if services().globals.block_non_admin_invites() {
info!("Received remote invite from server {} for room {}, but \"block_non_admin_invites\" is enabled, rejecting.", &sender_servername, &body.room_id);
return Err(Error::BadRequest(
ErrorKind::Forbidden,
"This server does not allow room invites.",
));
}
services()
.rooms
.event_handler
@ -1922,7 +1914,9 @@ pub async fn create_invite_route(
)
.map_err(|_| Error::BadRequest(ErrorKind::InvalidParam, "state_key is not a user id."))?;
if services().rooms.metadata.is_banned(&body.room_id)? && !services().users.is_admin(&invited_user)? {
if services().rooms.metadata.is_banned(&body.room_id)?
&& !services().users.is_admin(&invited_user)?
{
info!(
"Received remote invite from server {} for room {} and for user {invited_user}, but room is banned by us.",
&sender_servername, &body.room_id
@ -1933,6 +1927,14 @@ pub async fn create_invite_route(
));
}
if services().globals.block_non_admin_invites() && !services().users.is_admin(&invited_user)? {
info!("Received remote invite from server {} for room {} and for user {invited_user} who is not an admin, but \"block_non_admin_invites\" is enabled, rejecting.", &sender_servername, &body.room_id);
return Err(Error::BadRequest(
ErrorKind::Forbidden,
"This server does not allow room invites.",
));
}
let mut invite_state = body.invite_room_state.clone();
let mut event: JsonObject = serde_json::from_str(body.event.get())