diff options
author | Nay <dnpd.dd@gmail.com> | 2013-09-02 13:25:07 +0100 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2013-09-02 13:25:07 +0100 |
commit | 28f9317698aec3eb8480e6682af3c4c65a98707c (patch) | |
tree | 331d8499075fe378cbf37bb2d33372e4bbc80a72 | |
parent | f3487aa0e1731728383b3ef33941dd774297c600 (diff) |
Core/RBAC: Move cast and characters commands to RBAC (using individual permissions)
-rw-r--r-- | sql/updates/auth/2013_09_02_16_auth_misc.sql | 23 | ||||
-rw-r--r-- | sql/updates/auth/2013_09_02_17_auth_misc.sql | 47 | ||||
-rw-r--r-- | sql/updates/world/2013_09_02_17_world_command.sql | 11 | ||||
-rw-r--r-- | sql/updates/world/2013_09_02_18_world_command.sql | 23 | ||||
-rw-r--r-- | src/server/game/Accounts/RBAC.h | 26 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_cast.cpp | 18 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_character.cpp | 44 |
7 files changed, 159 insertions, 33 deletions
diff --git a/sql/updates/auth/2013_09_02_16_auth_misc.sql b/sql/updates/auth/2013_09_02_16_auth_misc.sql new file mode 100644 index 00000000000..5d3a7754e86 --- /dev/null +++ b/sql/updates/auth/2013_09_02_16_auth_misc.sql @@ -0,0 +1,23 @@ +/* cs_cast.cpp */ + +SET @id = 263; + +-- Add new permissions +DELETE FROM `rbac_permissions` WHERE `id` BETWEEN @id AND @id+5; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(@id+0, 'cast'), +(@id+1, 'cast back'), +(@id+2, 'cast dist'), +(@id+3, 'cast self'), +(@id+4, 'cast target'), +(@id+5, 'cast dest'); + +-- Add permissions to "corresponding Commands Role" +DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN @id AND @id+5; +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); diff --git a/sql/updates/auth/2013_09_02_17_auth_misc.sql b/sql/updates/auth/2013_09_02_17_auth_misc.sql new file mode 100644 index 00000000000..54087e64c22 --- /dev/null +++ b/sql/updates/auth/2013_09_02_17_auth_misc.sql @@ -0,0 +1,47 @@ +/* cs_character.cpp */ + +SET @id = 273; + +-- Add new permissions +DELETE FROM `rbac_permissions` WHERE `id` BETWEEN @id AND @id+17; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(@id+0 , 'character'), +(@id+1 , 'character customize'), +(@id+2 , 'character changefaction'), +(@id+3 , 'character changerace'), +(@id+4 , 'character deleted'), +-- (@id+5 , 'character deleted delete'), +(@id+6 , 'character deleted list'), +(@id+7 , 'character deleted restore'), +-- (@id+8 , 'character deleted old'), +-- (@id+9 , 'character erase'), +(@id+10, 'character level'), +(@id+11, 'character rename'), +(@id+12, 'character reputation'), +(@id+13, 'character titles'), +(@id+14, 'levelup'), +(@id+15, 'pdump'), +(@id+16, 'pdump load'), +(@id+17, 'pdump write'); + +-- Add permissions to "corresponding Commands Role" +DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN @id AND @id+17; +INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES +(3, @id+0 ), +(3, @id+1 ), +(3, @id+2 ), +(3, @id+3 ), +(3, @id+4 ), +-- (c, @id+5 ), +(4, @id+6 ), +(4, @id+7 ), +-- (c, @id+8 ), +-- (c, @id+9 ), +(4, @id+10), +(3, @id+11), +(3, @id+12), +(3, @id+13), +(4, @id+14), +(4, @id+15), +(4, @id+16), +(4, @id+17); diff --git a/sql/updates/world/2013_09_02_17_world_command.sql b/sql/updates/world/2013_09_02_17_world_command.sql new file mode 100644 index 00000000000..1bbb062626d --- /dev/null +++ b/sql/updates/world/2013_09_02_17_world_command.sql @@ -0,0 +1,11 @@ +/* cs_cast.cpp */ + +SET @id = 263; + +-- Update command table with new RBAC permissions +UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'cast'; +UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'cast back'; +UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'cast dist'; +UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'cast self'; +UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'cast target'; +UPDATE `command` SET `permission` = @id+5 WHERE `name` = 'cast dest'; diff --git a/sql/updates/world/2013_09_02_18_world_command.sql b/sql/updates/world/2013_09_02_18_world_command.sql new file mode 100644 index 00000000000..f9923e7d755 --- /dev/null +++ b/sql/updates/world/2013_09_02_18_world_command.sql @@ -0,0 +1,23 @@ +/* cs_character.cpp */ + +SET @id = 273; + +-- Update command table with new RBAC permissions +UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'character'; +UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'character customize'; +UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'character changefaction'; +UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'character changerace'; +UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'character deleted'; +UPDATE `command` SET `permission` = @id+5 WHERE `name` = 'character deleted delete'; +UPDATE `command` SET `permission` = @id+6 WHERE `name` = 'character deleted list'; +UPDATE `command` SET `permission` = @id+7 WHERE `name` = 'character deleted restore'; +UPDATE `command` SET `permission` = @id+8 WHERE `name` = 'character deleted old'; +UPDATE `command` SET `permission` = @id+9 WHERE `name` = 'character erase'; +UPDATE `command` SET `permission` = @id+10 WHERE `name` = 'character level'; +UPDATE `command` SET `permission` = @id+11 WHERE `name` = 'character rename'; +UPDATE `command` SET `permission` = @id+12 WHERE `name` = 'character reputation'; +UPDATE `command` SET `permission` = @id+13 WHERE `name` = 'character titles'; +UPDATE `command` SET `permission` = @id+14 WHERE `name` = 'levelup'; +UPDATE `command` SET `permission` = @id+15 WHERE `name` = 'pdump'; +UPDATE `command` SET `permission` = @id+16 WHERE `name` = 'pdump load'; +UPDATE `command` SET `permission` = @id+17 WHERE `name` = 'pdump write'; diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index 901465fd16d..492a7197cfe 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -166,8 +166,30 @@ 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_CAST = 267,
+ RBAC_PERM_COMMAND_CAST_BACK = 268,
+ RBAC_PERM_COMMAND_CAST_DIST = 269,
+ RBAC_PERM_COMMAND_CAST_SELF = 270,
+ RBAC_PERM_COMMAND_CAST_TARGET = 271,
+ RBAC_PERM_COMMAND_CAST_DEST = 272,
+ RBAC_PERM_COMMAND_CHARACTER = 273,
+ RBAC_PERM_COMMAND_CHARACTER_CUSTOMIZE = 274,
+ RBAC_PERM_COMMAND_CHARACTER_CHANGEFACTION = 275,
+ RBAC_PERM_COMMAND_CHARACTER_CHANGERACE = 276,
+ RBAC_PERM_COMMAND_CHARACTER_DELETED = 277,
+ RBAC_PERM_COMMAND_CHARACTER_DELETED_DELETE = 278, // Not in DB - console
+ RBAC_PERM_COMMAND_CHARACTER_DELETED_LIST = 279,
+ RBAC_PERM_COMMAND_CHARACTER_DELETED_RESTORE = 280,
+ RBAC_PERM_COMMAND_CHARACTER_DELETED_OLD = 281, // Not in DB - console
+ RBAC_PERM_COMMAND_CHARACTER_ERASE = 282, // Not in DB - console
+ RBAC_PERM_COMMAND_CHARACTER_LEVEL = 283,
+ RBAC_PERM_COMMAND_CHARACTER_RENAME = 284,
+ RBAC_PERM_COMMAND_CHARACTER_REPUTATION = 285,
+ RBAC_PERM_COMMAND_CHARACTER_TITLES = 286,
+ RBAC_PERM_COMMAND_LEVELUP = 287,
+ RBAC_PERM_COMMAND_PDUMP = 288,
+ RBAC_PERM_COMMAND_PDUMP_LOAD = 289,
+ RBAC_PERM_COMMAND_PDUMP_WRITE = 290,
RBAC_PERM_COMMAND_CHEAT = 291,
RBAC_PERM_COMMAND_CHEAT_CASTTIME = 292,
RBAC_PERM_COMMAND_CHEAT_COOLDOWN = 293,
diff --git a/src/server/scripts/Commands/cs_cast.cpp b/src/server/scripts/Commands/cs_cast.cpp index 02a3aec9e82..cbcbbd214b3 100644 --- a/src/server/scripts/Commands/cs_cast.cpp +++ b/src/server/scripts/Commands/cs_cast.cpp @@ -37,18 +37,18 @@ public: { static ChatCommand castCommandTable[] = { - { "back", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastBackCommand, "", NULL }, - { "dist", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastDistCommand, "", NULL }, - { "self", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastSelfCommand, "", NULL }, - { "target", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastTargetCommad, "", NULL }, - { "dest", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastDestCommand, "", NULL }, - { "", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "back", RBAC_PERM_COMMAND_CAST_BACK, false, &HandleCastBackCommand, "", NULL }, + { "dist", RBAC_PERM_COMMAND_CAST_DIST, false, &HandleCastDistCommand, "", NULL }, + { "self", RBAC_PERM_COMMAND_CAST_SELF, false, &HandleCastSelfCommand, "", NULL }, + { "target", RBAC_PERM_COMMAND_CAST_TARGET, false, &HandleCastTargetCommad, "", NULL }, + { "dest", RBAC_PERM_COMMAND_CAST_DEST, false, &HandleCastDestCommand, "", NULL }, + { "", RBAC_PERM_COMMAND_CAST, false, &HandleCastCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "cast", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", castCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { "cast", RBAC_PERM_COMMAND_CAST, false, NULL, "", castCommandTable }, + { NULL, 0, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index d9baa5d56c3..185ce458b61 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -39,39 +39,39 @@ public: { static ChatCommand pdumpCommandTable[] = { - { "load", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandlePDumpLoadCommand, "", NULL }, - { "write", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandlePDumpWriteCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "load", RBAC_PERM_COMMAND_PDUMP_LOAD, true, &HandlePDumpLoadCommand, "", NULL }, + { "write", RBAC_PERM_COMMAND_PDUMP_WRITE, true, &HandlePDumpWriteCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand characterDeletedCommandTable[] = { - { "delete", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleCharacterDeletedDeleteCommand, "", NULL }, - { "list", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleCharacterDeletedListCommand, "", NULL }, - { "restore", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleCharacterDeletedRestoreCommand, "", NULL }, - { "old", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleCharacterDeletedOldCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "delete", RBAC_PERM_COMMAND_CHARACTER_DELETED_DELETE, true, &HandleCharacterDeletedDeleteCommand, "", NULL }, + { "list", RBAC_PERM_COMMAND_CHARACTER_DELETED_LIST, true, &HandleCharacterDeletedListCommand, "", NULL }, + { "restore", RBAC_PERM_COMMAND_CHARACTER_DELETED_RESTORE, true, &HandleCharacterDeletedRestoreCommand, "", NULL }, + { "old", RBAC_PERM_COMMAND_CHARACTER_DELETED_OLD, true, &HandleCharacterDeletedOldCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand characterCommandTable[] = { - { "customize", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterCustomizeCommand, "", NULL }, - { "changefaction", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterChangeFactionCommand, "", NULL }, - { "changerace", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterChangeRaceCommand, "", NULL }, - { "deleted", RBAC_PERM_GAMEMASTER_COMMANDS, true, NULL, "", characterDeletedCommandTable }, - { "erase", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleCharacterEraseCommand, "", NULL }, - { "level", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleCharacterLevelCommand, "", NULL }, - { "rename", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterRenameCommand, "", NULL }, - { "reputation", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterReputationCommand, "", NULL }, - { "titles", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterTitlesCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "customize", RBAC_PERM_COMMAND_CHARACTER_CUSTOMIZE, true, &HandleCharacterCustomizeCommand, "", NULL }, + { "changefaction", RBAC_PERM_COMMAND_CHARACTER_CHANGEFACTION, true, &HandleCharacterChangeFactionCommand, "", NULL }, + { "changerace", RBAC_PERM_COMMAND_CHARACTER_CHANGERACE, true, &HandleCharacterChangeRaceCommand, "", NULL }, + { "deleted", RBAC_PERM_COMMAND_CHARACTER_DELETED, true, NULL, "", characterDeletedCommandTable }, + { "erase", RBAC_PERM_COMMAND_CHARACTER_ERASE, true, &HandleCharacterEraseCommand, "", NULL }, + { "level", RBAC_PERM_COMMAND_CHARACTER_LEVEL, true, &HandleCharacterLevelCommand, "", NULL }, + { "rename", RBAC_PERM_COMMAND_CHARACTER_RENAME, true, &HandleCharacterRenameCommand, "", NULL }, + { "reputation", RBAC_PERM_COMMAND_CHARACTER_REPUTATION, true, &HandleCharacterReputationCommand, "", NULL }, + { "titles", RBAC_PERM_COMMAND_CHARACTER_TITLES, true, &HandleCharacterTitlesCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "character", RBAC_PERM_GAMEMASTER_COMMANDS, true, NULL, "", characterCommandTable }, - { "levelup", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLevelUpCommand, "", NULL }, - { "pdump", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", pdumpCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { "character", RBAC_PERM_COMMAND_CHARACTER, true, NULL, "", characterCommandTable }, + { "levelup", RBAC_PERM_COMMAND_LEVELUP, false, &HandleLevelUpCommand, "", NULL }, + { "pdump", RBAC_PERM_COMMAND_PDUMP, true, NULL, "", pdumpCommandTable }, + { NULL, 0, false, NULL, "", NULL } }; return commandTable; } |