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

This commit is contained in:
Spp
2013-09-10 13:57:30 +02:00
parent efa194a7ce
commit 4f632ee3ff
4 changed files with 43 additions and 7 deletions

View File

@@ -0,0 +1,21 @@
/* cs_quest.cpp */
SET @id = 602;
-- Add new permissions
DELETE FROM `rbac_permissions` WHERE `id` BETWEEN @id AND @id+4;
INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
(@id+0, 'quest'),
(@id+1, 'quest add'),
(@id+2, 'quest complete'),
(@id+3, 'quest remove'),
(@id+4, 'quest reward');
-- 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
(4, @id+0),
(4, @id+1),
(4, @id+2),
(4, @id+3),
(4, @id+4);

View File

@@ -0,0 +1,10 @@
/* cs_npc.cpp */
SET @id = 602;
-- Update command table with new RBAC permissions
UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'quest';
UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'quest add';
UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'quest complete';
UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'quest remove';
UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'quest reward';

View File

@@ -501,6 +501,11 @@ enum RBACPermissions
RBAC_PERM_COMMAND_NPC_WHISPER = 599,
RBAC_PERM_COMMAND_NPC_YELL = 600,
RBAC_PERM_COMMAND_NPC_TAME = 601,
RBAC_PERM_COMMAND_QUEST = 602,
RBAC_PERM_COMMAND_QUEST_ADD = 603,
RBAC_PERM_COMMAND_QUEST_COMPLETE = 604,
RBAC_PERM_COMMAND_QUEST_REMOVE = 605,
RBAC_PERM_COMMAND_QUEST_REWARD = 606,
// custom permissions 1000+
RBAC_PERM_MAX

View File

@@ -37,16 +37,16 @@ public:
{
static ChatCommand questCommandTable[] =
{
{ "add", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleQuestAdd, "", NULL },
{ "complete", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleQuestComplete, "", NULL },
{ "remove", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleQuestRemove, "", NULL },
{ "reward", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleQuestReward, "", NULL },
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
{ "add", RBAC_PERM_COMMAND_QUEST_ADD, false, &HandleQuestAdd, "", NULL },
{ "complete", RBAC_PERM_COMMAND_QUEST_COMPLETE, false, &HandleQuestComplete, "", NULL },
{ "remove", RBAC_PERM_COMMAND_QUEST_REMOVE, false, &HandleQuestRemove, "", NULL },
{ "reward", RBAC_PERM_COMMAND_QUEST_REWARD, false, &HandleQuestReward, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand commandTable[] =
{
{ "quest", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", questCommandTable },
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
{ "quest", RBAC_PERM_COMMAND_QUEST, false, NULL, "", questCommandTable },
{ NULL, 0, false, NULL, "", NULL }
};
return commandTable;
}