From 783df061201f115eab37bae461d5a96e6dd5191a Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Wed, 15 Jul 2026 10:43:49 +0200 Subject: [PATCH] chore(Script/Commands): Update last commands to RBAC (#26607) --- .../rev_1784028632835376200.sql | 33 +++++++++++++++++++ src/server/game/Accounts/RBAC.h | 13 ++++++++ .../scripts/Commands/cs_autobroadcast.cpp | 9 ++--- src/server/scripts/Commands/cs_mail.cpp | 5 +-- src/server/scripts/Commands/cs_npc.cpp | 8 ++--- src/server/scripts/Commands/cs_pool.cpp | 5 +-- src/server/scripts/Commands/cs_spellinfo.cpp | 9 ++--- 7 files changed, 66 insertions(+), 16 deletions(-) create mode 100644 data/sql/updates/pending_db_auth/rev_1784028632835376200.sql diff --git a/data/sql/updates/pending_db_auth/rev_1784028632835376200.sql b/data/sql/updates/pending_db_auth/rev_1784028632835376200.sql new file mode 100644 index 000000000..8ef345660 --- /dev/null +++ b/data/sql/updates/pending_db_auth/rev_1784028632835376200.sql @@ -0,0 +1,33 @@ +-- RBAC permissions for core commands migrated off deprecated GM security levels. +DELETE FROM `rbac_permissions` WHERE `id` BETWEEN 926 AND 938; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(926, 'Command: autobroadcast list'), +(927, 'Command: autobroadcast add'), +(928, 'Command: autobroadcast locale'), +(929, 'Command: autobroadcast remove'), +(930, 'Command: mail list'), +(931, 'Command: mail return'), +(932, 'Command: npc load'), +(933, 'Command: pool info'), +(934, 'Command: pool lookup'), +(935, 'Command: spellinfo attributes'), +(936, 'Command: spellinfo effects'), +(937, 'Command: spellinfo targets'), +(938, 'Command: spellinfo all'); + +-- Link each command permission to its role: 196 = Administrator role, 197 = Gamemaster role. +DELETE FROM `rbac_linked_permissions` WHERE `linkedId` BETWEEN 926 AND 938; +INSERT INTO `rbac_linked_permissions` (`id`, `linkedId`) VALUES +(197, 926), +(196, 927), +(196, 928), +(196, 929), +(197, 930), +(197, 931), +(196, 932), +(197, 933), +(197, 934), +(197, 935), +(197, 936), +(197, 937), +(197, 938); diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index 2989bbf5e..8a2a77585 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -687,6 +687,19 @@ enum RBACPermissions RBAC_PERM_COMMAND_CHATFILTER_LIST = 923, RBAC_PERM_COMMAND_CHATFILTER_ADD = 924, RBAC_PERM_COMMAND_CHATFILTER_REMOVE = 925, + RBAC_PERM_COMMAND_AUTOBROADCAST_LIST = 926, + RBAC_PERM_COMMAND_AUTOBROADCAST_ADD = 927, + RBAC_PERM_COMMAND_AUTOBROADCAST_LOCALE = 928, + RBAC_PERM_COMMAND_AUTOBROADCAST_REMOVE = 929, + RBAC_PERM_COMMAND_MAIL_LIST = 930, + RBAC_PERM_COMMAND_MAIL_RETURN = 931, + RBAC_PERM_COMMAND_NPC_LOAD = 932, + RBAC_PERM_COMMAND_POOL_INFO = 933, + RBAC_PERM_COMMAND_POOL_LOOKUP = 934, + RBAC_PERM_COMMAND_SPELLINFO_ATTRIBUTES = 935, + RBAC_PERM_COMMAND_SPELLINFO_EFFECTS = 936, + RBAC_PERM_COMMAND_SPELLINFO_TARGETS = 937, + RBAC_PERM_COMMAND_SPELLINFO_ALL = 938, // custom permissions 1000+ RBAC_PERM_MAX }; diff --git a/src/server/scripts/Commands/cs_autobroadcast.cpp b/src/server/scripts/Commands/cs_autobroadcast.cpp index 27b5a8c20..3173b3b4c 100644 --- a/src/server/scripts/Commands/cs_autobroadcast.cpp +++ b/src/server/scripts/Commands/cs_autobroadcast.cpp @@ -20,6 +20,7 @@ #include "CommandScript.h" #include "Config.h" #include "Language.h" +#include "RBAC.h" using namespace Acore::ChatCommands; @@ -32,10 +33,10 @@ public: { static ChatCommandTable autobroadcastCommandTable = { - { "list", HandleAutobroadcastListCommand, SEC_GAMEMASTER, Console::Yes }, - { "add", HandleAutobroadcastAddCommand, SEC_ADMINISTRATOR, Console::Yes }, - { "locale", HandleAutobroadcastLocaleCommand, SEC_ADMINISTRATOR, Console::Yes }, - { "remove", HandleAutobroadcastRemoveCommand, SEC_ADMINISTRATOR, Console::Yes } + { "list", HandleAutobroadcastListCommand, rbac::RBAC_PERM_COMMAND_AUTOBROADCAST_LIST, Console::Yes }, + { "add", HandleAutobroadcastAddCommand, rbac::RBAC_PERM_COMMAND_AUTOBROADCAST_ADD, Console::Yes }, + { "locale", HandleAutobroadcastLocaleCommand, rbac::RBAC_PERM_COMMAND_AUTOBROADCAST_LOCALE, Console::Yes }, + { "remove", HandleAutobroadcastRemoveCommand, rbac::RBAC_PERM_COMMAND_AUTOBROADCAST_REMOVE, Console::Yes } }; static ChatCommandTable commandTable = diff --git a/src/server/scripts/Commands/cs_mail.cpp b/src/server/scripts/Commands/cs_mail.cpp index 3fcf3a2c8..d8f09f85b 100644 --- a/src/server/scripts/Commands/cs_mail.cpp +++ b/src/server/scripts/Commands/cs_mail.cpp @@ -26,6 +26,7 @@ #include "ObjectAccessor.h" #include "ObjectMgr.h" #include "Player.h" +#include "RBAC.h" #include "ScriptMgr.h" #include "Timer.h" @@ -40,8 +41,8 @@ public: { static ChatCommandTable mailCommandTable = { - { "list", HandleMailListCommand, SEC_GAMEMASTER, Console::Yes }, - { "return", HandleMailReturnCommand, SEC_GAMEMASTER, Console::Yes } + { "list", HandleMailListCommand, rbac::RBAC_PERM_COMMAND_MAIL_LIST, Console::Yes }, + { "return", HandleMailReturnCommand, rbac::RBAC_PERM_COMMAND_MAIL_RETURN, Console::Yes } }; static ChatCommandTable commandTable = diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 28da07703..d44fcfb81 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -200,11 +200,11 @@ public: { "add", npcAddCommandTable }, { "delete", npcDeleteCommandTable }, { "follow", npcFollowCommandTable }, - { "load", HandleNpcLoadCommand, SEC_ADMINISTRATOR, Console::Yes }, + { "load", HandleNpcLoadCommand, rbac::RBAC_PERM_COMMAND_NPC_LOAD, Console::Yes }, { "set", npcSetCommandTable }, - { "showloot", HandleNpcShowLootCommand, rbac::RBAC_PERM_COMMAND_NPC_SHOWLOOT, Console::No }, - { "spawngroup", HandleNpcSpawnGroupCommand, SEC_ADMINISTRATOR, Console::No }, - { "despawngroup", HandleNpcDespawnGroupCommand, SEC_ADMINISTRATOR, Console::No } + { "showloot", HandleNpcShowLootCommand, rbac::RBAC_PERM_COMMAND_NPC_SHOWLOOT, Console::No }, + { "spawngroup", HandleNpcSpawnGroupCommand, rbac::RBAC_PERM_COMMAND_NPC_SPAWNGROUP, Console::No }, + { "despawngroup", HandleNpcDespawnGroupCommand, rbac::RBAC_PERM_COMMAND_NPC_DESPAWNGROUP, Console::No } }; static ChatCommandTable commandTable = { diff --git a/src/server/scripts/Commands/cs_pool.cpp b/src/server/scripts/Commands/cs_pool.cpp index 8f56e7063..44661a23a 100644 --- a/src/server/scripts/Commands/cs_pool.cpp +++ b/src/server/scripts/Commands/cs_pool.cpp @@ -25,6 +25,7 @@ #include "ObjectMgr.h" #include "Player.h" #include "PoolMgr.h" +#include "RBAC.h" using namespace Acore::ChatCommands; @@ -37,8 +38,8 @@ public: { static ChatCommandTable poolCommandTable = { - { "info", HandlePoolInfoCommand, SEC_GAMEMASTER, Console::Yes }, - { "lookup", HandlePoolLookupCommand, SEC_GAMEMASTER, Console::No }, + { "info", HandlePoolInfoCommand, rbac::RBAC_PERM_COMMAND_POOL_INFO, Console::Yes }, + { "lookup", HandlePoolLookupCommand, rbac::RBAC_PERM_COMMAND_POOL_LOOKUP, Console::No }, }; static ChatCommandTable commandTable = { diff --git a/src/server/scripts/Commands/cs_spellinfo.cpp b/src/server/scripts/Commands/cs_spellinfo.cpp index f0a1014d9..5b2523ce3 100644 --- a/src/server/scripts/Commands/cs_spellinfo.cpp +++ b/src/server/scripts/Commands/cs_spellinfo.cpp @@ -19,6 +19,7 @@ #include "CommandScript.h" #include "DBCStructure.h" #include "Language.h" +#include "RBAC.h" #include "SmartEnum.h" #include "SpellAuraDefines.h" #include "SpellInfo.h" @@ -35,10 +36,10 @@ public: { static ChatCommandTable spellinfoCommandTable = { - { "attributes", HandleSpellInfoAttributesCommand, SEC_GAMEMASTER, Console::Yes }, - { "effects", HandleSpellInfoEffectsCommand, SEC_GAMEMASTER, Console::Yes }, - { "targets", HandleSpellInfoTargetsCommand, SEC_GAMEMASTER, Console::Yes }, - { "all", HandleSpellInfoAllCommand, SEC_GAMEMASTER, Console::Yes } + { "attributes", HandleSpellInfoAttributesCommand, rbac::RBAC_PERM_COMMAND_SPELLINFO_ATTRIBUTES, Console::Yes }, + { "effects", HandleSpellInfoEffectsCommand, rbac::RBAC_PERM_COMMAND_SPELLINFO_EFFECTS, Console::Yes }, + { "targets", HandleSpellInfoTargetsCommand, rbac::RBAC_PERM_COMMAND_SPELLINFO_TARGETS, Console::Yes }, + { "all", HandleSpellInfoAllCommand, rbac::RBAC_PERM_COMMAND_SPELLINFO_ALL, Console::Yes } }; static ChatCommandTable commandTable =