fix: channel role permissions fail with 400 InvalidOperation for server owners/admins (#802)

fix: channel role permissions fail with InvalidOperation for owners/admins

Fix: explicitly populate the server reference via
set_server_from_channel() before relying on server_ref().

Signed-off-by: bluecords <133072610+bluecords@users.noreply.github.com>
This commit is contained in:
Kenyon Hopkins
2026-06-20 14:34:54 -04:00
committed by GitHub
parent 0af376c26b
commit a7af24b38d

View File

@@ -2,7 +2,7 @@ use revolt_database::{
util::{permissions::DatabasePermissionQuery, reference::Reference}, voice::{sync_voice_permissions, VoiceClient}, Database, User
};
use revolt_models::v0;
use revolt_permissions::{calculate_channel_permissions, ChannelPermission, Override};
use revolt_permissions::{calculate_channel_permissions, ChannelPermission, Override, PermissionQuery};
use revolt_result::{create_error, Result};
use rocket::{serde::json::Json, State};
@@ -25,6 +25,8 @@ pub async fn set_role_permissions(
let mut query = DatabasePermissionQuery::new(db, &user).channel(&channel);
let permissions: revolt_permissions::PermissionValue = calculate_channel_permissions(&mut query).await;
query.set_server_from_channel().await;
permissions.throw_if_lacking_channel_permission(ChannelPermission::ManagePermissions)?;
if let Some(server) = query.server_ref() {