diff options
-rw-r--r-- | sql/updates/auth/2013_09_02_07_auth_misc.sql | 37 | ||||
-rw-r--r-- | sql/updates/world/2013_09_02_08_world_command.sql | 18 | ||||
-rw-r--r-- | src/server/game/Accounts/RBAC.h | 14 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_gobject.cpp | 36 |
4 files changed, 87 insertions, 18 deletions
diff --git a/sql/updates/auth/2013_09_02_07_auth_misc.sql b/sql/updates/auth/2013_09_02_07_auth_misc.sql new file mode 100644 index 00000000000..3fb2b343b9b --- /dev/null +++ b/sql/updates/auth/2013_09_02_07_auth_misc.sql @@ -0,0 +1,37 @@ +/* cs_gobject.cpp */ + +SET @id = 387; + +-- Add new permissions +DELETE FROM `rbac_permissions` WHERE `id` BETWEEN @id AND @id+12; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(@id+0, 'gobject'), +(@id+1, 'gobject activate'), +(@id+2, 'gobject add'), +(@id+3, 'gobject add temp'), +(@id+4, 'gobject delete'), +(@id+5, 'gobject info'), +(@id+6, 'gobject move'), +(@id+7, 'gobject near'), +(@id+8, 'gobject set'), +(@id+9, 'gobject set phase'), +(@id+10, 'gobject set state'), +(@id+11, 'gobject target'), +(@id+12, 'gobject turn'); + +-- Add permissions to "corresponding Commands Role" +DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN @id AND @id+12; +INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES +(3, @id+0), +(3, @id+1), +(3, @id+2), +(3, @id+3), +(3, @id+4), +(3, @id+5), +(3, @id+6), +(3, @id+7), +(3, @id+8), +(3, @id+9), +(3, @id+10), +(3, @id+11), +(3, @id+12); diff --git a/sql/updates/world/2013_09_02_08_world_command.sql b/sql/updates/world/2013_09_02_08_world_command.sql new file mode 100644 index 00000000000..d09a7030a5b --- /dev/null +++ b/sql/updates/world/2013_09_02_08_world_command.sql @@ -0,0 +1,18 @@ +/* cs_gobject.cpp */ + +SET @id = 371; + +-- Update command table with new RBAC permissions +UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'gobject'; +UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'gobject activate'; +UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'gobject add'; +UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'gobject add temp'; +UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'gobject delete'; +UPDATE `command` SET `permission` = @id+5 WHERE `name` = 'gobject info'; +UPDATE `command` SET `permission` = @id+6 WHERE `name` = 'gobject move'; +UPDATE `command` SET `permission` = @id+7 WHERE `name` = 'gobject near'; +UPDATE `command` SET `permission` = @id+8 WHERE `name` = 'gobject set'; +UPDATE `command` SET `permission` = @id+9 WHERE `name` = 'gobject set phase'; +UPDATE `command` SET `permission` = @id+10 WHERE `name` = 'gobject set state'; +UPDATE `command` SET `permission` = @id+11 WHERE `name` = 'gobject target'; +UPDATE `command` SET `permission` = @id+12 WHERE `name` = 'gobject turn'); diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index c2b3ff42369..32509817a1b 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -264,6 +264,20 @@ enum RBACPermissions RBAC_PERM_COMMAND_GO_TRIGGER = 384,
RBAC_PERM_COMMAND_GO_XYZ = 385,
RBAC_PERM_COMMAND_GO_ZONEXY = 386,
+ RBAC_PERM_COMMAND_GOBJECT = 387,
+ RBAC_PERM_COMMAND_GOBJECT_ACTIVATE = 388,
+ RBAC_PERM_COMMAND_GOBJECT_ADD = 389,
+ RBAC_PERM_COMMAND_GOBJECT_ADD_TEMP = 390,
+ RBAC_PERM_COMMAND_GOBJECT_DELETE = 391,
+ RBAC_PERM_COMMAND_GOBJECT_INFO = 392,
+ RBAC_PERM_COMMAND_GOBJECT_MOVE = 393,
+ RBAC_PERM_COMMAND_GOBJECT_NEAR = 394,
+ RBAC_PERM_COMMAND_GOBJECT_SET = 395,
+ RBAC_PERM_COMMAND_GOBJECT_SET_PHASE = 396,
+ RBAC_PERM_COMMAND_GOBJECT_SET_STATE = 397,
+ RBAC_PERM_COMMAND_GOBJECT_TARGET = 398,
+ RBAC_PERM_COMMAND_GOBJECT_TURN = 399,
+
// custom permissions 1000+
RBAC_PERM_MAX
};
diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index 140219cdf3c..2c5e9923f6e 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -41,33 +41,33 @@ public: { static ChatCommand gobjectAddCommandTable[] = { - { "temp", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectAddTempCommand, "", NULL }, - { "", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectAddCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "temp", RBAC_PERM_COMMAND_GOBJECT_ADD_TEMP, false, &HandleGameObjectAddTempCommand, "", NULL }, + { "", RBAC_PERM_COMMAND_GOBJECT_ADD, false, &HandleGameObjectAddCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand gobjectSetCommandTable[] = { - { "phase", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectSetPhaseCommand, "", NULL }, - { "state", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectSetStateCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "phase", RBAC_PERM_COMMAND_GOBJECT_SET_PHASE, false, &HandleGameObjectSetPhaseCommand, "", NULL }, + { "state", RBAC_PERM_COMMAND_GOBJECT_SET_STATE, false, &HandleGameObjectSetStateCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand gobjectCommandTable[] = { - { "activate", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectActivateCommand, "", NULL }, - { "delete", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectDeleteCommand, "", NULL }, - { "info", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectInfoCommand, "", NULL }, - { "move", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectMoveCommand, "", NULL }, - { "near", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectNearCommand, "", NULL }, - { "target", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectTargetCommand, "", NULL }, - { "turn", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectTurnCommand, "", NULL }, - { "add", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", gobjectAddCommandTable }, - { "set", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", gobjectSetCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { "activate", RBAC_PERM_COMMAND_GOBJECT_ACTIVATE, false, &HandleGameObjectActivateCommand, "", NULL }, + { "delete", RBAC_PERM_COMMAND_GOBJECT_DELETE, false, &HandleGameObjectDeleteCommand, "", NULL }, + { "info", RBAC_PERM_COMMAND_GOBJECT_INFO, false, &HandleGameObjectInfoCommand, "", NULL }, + { "move", RBAC_PERM_COMMAND_GOBJECT_MOVE, false, &HandleGameObjectMoveCommand, "", NULL }, + { "near", RBAC_PERM_COMMAND_GOBJECT_NEAR, false, &HandleGameObjectNearCommand, "", NULL }, + { "target", RBAC_PERM_COMMAND_GOBJECT_TARGET, false, &HandleGameObjectTargetCommand, "", NULL }, + { "turn", RBAC_PERM_COMMAND_GOBJECT_TURN, false, &HandleGameObjectTurnCommand, "", NULL }, + { "add", RBAC_PERM_COMMAND_GOBJECT_ADD, false, NULL, "", gobjectAddCommandTable }, + { "set", RBAC_PERM_COMMAND_GOBJECT_SET, false, NULL, "", gobjectSetCommandTable }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "gobject", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", gobjectCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { "gobject", RBAC_PERM_COMMAND_GOBJECT, false, NULL, "", gobjectCommandTable }, + { NULL, 0, false, NULL, "", NULL } }; return commandTable; } |