forked from jmug/stoatchat
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:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user