Core/RBAC: Move instance commands to RBAC (using individual permissions)

This commit is contained in:
Spp
2013-09-02 11:58:14 +02:00
parent 08ef6bd9f8
commit 2625e78f80
4 changed files with 43 additions and 7 deletions
@@ -0,0 +1,21 @@
/* cs_instance.cpp */
SET @id = 412;
-- Add new permissions
DELETE FROM `rbac_permissions` WHERE `id` BETWEEN @id AND @id+4;
INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
(@id+0, 'instance'),
(@id+1, 'instance listbinds'),
(@id+2, 'instance unbind'),
(@id+3, 'instance stats'),
(@id+4, 'instance savedata');
-- Add permissions to "corresponding Commands Role"
DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN @id AND @id+4;
INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES
(2, @id+0),
(2, @id+1),
(2, @id+2),
(2, @id+3),
(2, @id+4);
@@ -0,0 +1,10 @@
/* cs_instance.cpp */
SET @id = 408;
-- Update command table with new RBAC permissions
UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'instance';
UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'instance listbinds';
UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'instance unbind';
UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'instance stats';
UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'instance savedata';
+5
View File
@@ -288,6 +288,11 @@ enum RBACPermissions
RBAC_PERM_COMMAND_HONOR_ADD = 409, RBAC_PERM_COMMAND_HONOR_ADD = 409,
RBAC_PERM_COMMAND_HONOR_ADD_KILL = 410, RBAC_PERM_COMMAND_HONOR_ADD_KILL = 410,
RBAC_PERM_COMMAND_HONOR_UPDATE = 411, RBAC_PERM_COMMAND_HONOR_UPDATE = 411,
RBAC_PERM_COMMAND_INSTANCE = 412,
RBAC_PERM_COMMAND_INSTANCE_LISTBINDS = 413,
RBAC_PERM_COMMAND_INSTANCE_UNBIND = 414,
RBAC_PERM_COMMAND_INSTANCE_STATS = 415,
RBAC_PERM_COMMAND_INSTANCE_SAVEDATA = 416,
// custom permissions 1000+ // custom permissions 1000+
RBAC_PERM_MAX RBAC_PERM_MAX
+7 -7
View File
@@ -39,17 +39,17 @@ public:
{ {
static ChatCommand instanceCommandTable[] = static ChatCommand instanceCommandTable[] =
{ {
{ "listbinds", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleInstanceListBindsCommand, "", NULL }, { "listbinds", RBAC_PERM_COMMAND_INSTANCE_LISTBINDS, false, &HandleInstanceListBindsCommand, "", NULL },
{ "unbind", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleInstanceUnbindCommand, "", NULL }, { "unbind", RBAC_PERM_COMMAND_INSTANCE_UNBIND, false, &HandleInstanceUnbindCommand, "", NULL },
{ "stats", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleInstanceStatsCommand, "", NULL }, { "stats", RBAC_PERM_COMMAND_INSTANCE_STATS, true, &HandleInstanceStatsCommand, "", NULL },
{ "savedata", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleInstanceSaveDataCommand, "", NULL }, { "savedata", RBAC_PERM_COMMAND_INSTANCE_SAVEDATA, false, &HandleInstanceSaveDataCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL } { NULL, 0, false, NULL, "", NULL }
}; };
static ChatCommand commandTable[] = static ChatCommand commandTable[] =
{ {
{ "instance", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", instanceCommandTable }, { "instance", RBAC_PERM_COMMAND_INSTANCE, true, NULL, "", instanceCommandTable },
{ NULL, 0, false, NULL, "", NULL } { NULL, 0, false, NULL, "", NULL }
}; };
return commandTable; return commandTable;