From 33d9da5060e4402f646a6592e089133e2414e38f Mon Sep 17 00:00:00 2001 From: Spp Date: Mon, 2 Sep 2013 09:39:35 +0200 Subject: [PATCH] Core/RBAC: Move cheat commands to RBAC (using individual permissions) --- sql/updates/auth/2013_09_02_00_auth_misc.sql | 29 +++++++++++++++++++ .../world/2013_09_02_01_world_command.sql | 14 +++++++++ src/server/game/Accounts/RBAC.h | 15 ++++++++-- src/server/scripts/Commands/cs_cheat.cpp | 22 +++++++------- 4 files changed, 67 insertions(+), 13 deletions(-) create mode 100644 sql/updates/auth/2013_09_02_00_auth_misc.sql create mode 100644 sql/updates/world/2013_09_02_01_world_command.sql diff --git a/sql/updates/auth/2013_09_02_00_auth_misc.sql b/sql/updates/auth/2013_09_02_00_auth_misc.sql new file mode 100644 index 0000000000..46a8054e08 --- /dev/null +++ b/sql/updates/auth/2013_09_02_00_auth_misc.sql @@ -0,0 +1,29 @@ +/* cs_cheat.cpp */ + +SET @id = 291; + +-- Add new permissions +DELETE FROM `rbac_permissions` WHERE `id` BETWEEN @id AND @id+8; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(@id+0, 'cheat'), +(@id+1, 'cheat casttime'), +(@id+2, 'cheat cooldown'), +(@id+3, 'cheat explore'), +(@id+4, 'cheat god'), +(@id+5, 'cheat power'), +(@id+6, 'cheat status'), +(@id+7, 'cheat taxi'), +(@id+8, 'cheat waterwalk'); + +-- Add permissions to "corresponding Commands Role" +DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN @id AND @id+8; +INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES +(4, @id+0), +(4, @id+1), +(4, @id+2), +(4, @id+3), +(4, @id+4), +(4, @id+5), +(4, @id+6), +(4, @id+7), +(4, @id+8); diff --git a/sql/updates/world/2013_09_02_01_world_command.sql b/sql/updates/world/2013_09_02_01_world_command.sql new file mode 100644 index 0000000000..aab76efa56 --- /dev/null +++ b/sql/updates/world/2013_09_02_01_world_command.sql @@ -0,0 +1,14 @@ +/* cs_cheat.cpp */ + +SET @id = 291; + +-- Update command table with new RBAC permissions +UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'cheat'; +UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'cheat casttime'; +UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'cheat cooldown'; +UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'cheat explore'; +UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'cheat god'; +UPDATE `command` SET `permission` = @id+5 WHERE `name` = 'cheat power'; +UPDATE `command` SET `permission` = @id+6 WHERE `name` = 'cheat status'; +UPDATE `command` SET `permission` = @id+7 WHERE `name` = 'cheat taxi'; +UPDATE `command` SET `permission` = @id+8 WHERE `name` = 'cheat waterwalk'; diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index ab8354554e..139aa8c93a 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -97,7 +97,7 @@ enum RBACPermissions RBAC_PERM_CHECK_FOR_LOWER_SECURITY = 47, RBAC_PERM_COMMANDS_PINFO_CHECK_PERSONAL_DATA = 48, RBAC_PERM_EMAIL_CONFIRM_FOR_PASS_CHANGE = 49, - RBAC_PERM_MAY_CHECK_OWN_EMAIL = 50, + RBAC_PERM_MAY_CHECK_OWN_EMAIL = 50, // Leave some space for core permissions RBAC_PERM_COMMAND_RBAC = 200, RBAC_PERM_COMMAND_RBAC_ACC = 201, @@ -166,8 +166,19 @@ enum RBACPermissions RBAC_PERM_COMMAND_ACCOUNT_SET_SEC = 264, RBAC_PERM_COMMAND_ACCOUNT_SET_SEC_EMAIL = 265, RBAC_PERM_COMMAND_ACCOUNT_SET_SEC_REGMAIL = 266, + // 6 reserved for cast (267-272) + // 18 reserved for character (273-290) + RBAC_PERM_COMMAND_CHEAT = 291, + RBAC_PERM_COMMAND_CHEAT_CASTTIME = 292, + RBAC_PERM_COMMAND_CHEAT_COOLDOWN = 293, + RBAC_PERM_COMMAND_CHEAT_EXPLORE = 294, + RBAC_PERM_COMMAND_CHEAT_GOD = 295, + RBAC_PERM_COMMAND_CHEAT_POWER = 296, + RBAC_PERM_COMMAND_CHEAT_STATUS = 297, + RBAC_PERM_COMMAND_CHEAT_TAXI = 298, + RBAC_PERM_COMMAND_CHEAT_WATERWALK = 299, - // custom permissions 1000+ + // custom permissions 1000+ RBAC_PERM_MAX }; diff --git a/src/server/scripts/Commands/cs_cheat.cpp b/src/server/scripts/Commands/cs_cheat.cpp index 874e79f64e..4610b12808 100644 --- a/src/server/scripts/Commands/cs_cheat.cpp +++ b/src/server/scripts/Commands/cs_cheat.cpp @@ -38,22 +38,22 @@ public: static ChatCommand cheatCommandTable[] = { - { "god", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGodModeCheatCommand, "", NULL }, - { "casttime", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleCasttimeCheatCommand, "", NULL }, - { "cooldown", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleCoolDownCheatCommand, "", NULL }, - { "power", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandlePowerCheatCommand, "", NULL }, - { "waterwalk", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleWaterWalkCheatCommand, "", NULL }, - { "status", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleCheatStatusCommand, "", NULL }, - { "taxi", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleTaxiCheatCommand, "", NULL }, - { "explore", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleExploreCheatCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "god", RBAC_PERM_COMMAND_CHEAT_GOD, false, &HandleGodModeCheatCommand, "", NULL }, + { "casttime", RBAC_PERM_COMMAND_CHEAT_CASTTIME, false, &HandleCasttimeCheatCommand, "", NULL }, + { "cooldown", RBAC_PERM_COMMAND_CHEAT_COOLDOWN, false, &HandleCoolDownCheatCommand, "", NULL }, + { "power", RBAC_PERM_COMMAND_CHEAT_POWER, false, &HandlePowerCheatCommand, "", NULL }, + { "waterwalk", RBAC_PERM_COMMAND_CHEAT_WATERWALK, false, &HandleWaterWalkCheatCommand, "", NULL }, + { "status", RBAC_PERM_COMMAND_CHEAT_STATUS, false, &HandleCheatStatusCommand, "", NULL }, + { "taxi", RBAC_PERM_COMMAND_CHEAT_TAXI, false, &HandleTaxiCheatCommand, "", NULL }, + { "explore", RBAC_PERM_COMMAND_CHEAT_EXPLORE, false, &HandleExploreCheatCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "cheat", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", cheatCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { "cheat", RBAC_PERM_COMMAND_CHEAT, false, NULL, "", cheatCommandTable }, + { NULL, 0, false, NULL, "", NULL } }; return commandTable; }