diff --git a/src/service/rooms/alias/mod.rs b/src/service/rooms/alias/mod.rs index c48330fb..c3470866 100644 --- a/src/service/rooms/alias/mod.rs +++ b/src/service/rooms/alias/mod.rs @@ -94,6 +94,12 @@ impl Service { #[tracing::instrument(skip(self))] pub async fn remove_alias(&self, alias: &RoomAliasId, user_id: &UserId) -> Result<()> { + if alias == self.services.globals.admin_alias + && user_id != self.services.globals.server_user + { + return Err!(Request(Forbidden("Only the server user can remove this alias"))); + } + if !self.user_can_remove_alias(alias, user_id).await? { return Err!(Request(Forbidden("User is not permitted to remove this alias."))); }