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

This commit is contained in:
Spp
2013-08-30 16:26:52 +02:00
parent 2b69f83823
commit 9bea4fc451
4 changed files with 103 additions and 23 deletions

View File

@@ -0,0 +1,43 @@
-- Add new permissions
DELETE FROM `rbac_permissions` WHERE `id` BETWEEN 239 AND 256;
INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
(239, 'ban'),
(240, 'ban account'),
(241, 'ban character'),
(242, 'ban ip'),
(243, 'ban playeraccount'),
(244, 'baninfo'),
(245, 'baninfo account'),
(246, 'baninfo character'),
(247, 'baninfo ip'),
(248, 'banlist'),
(249, 'banlist account'),
(250, 'banlist character'),
(251, 'banlist ip'),
(252, 'unban'),
(253, 'unban account'),
(254, 'unban character'),
(255, 'unban ip'),
(256, 'unban playeraccount');
-- Add Permissions to "corresponding Commands Role"
DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN 239 AND 256;
INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES
(4, 239),
(4, 240),
(4, 241),
(4, 242),
(4, 243),
(4, 244),
(4, 245),
(4, 246),
(4, 247),
(4, 248),
(4, 249),
(4, 250),
(4, 251),
(4, 252),
(4, 253),
(4, 254),
(4, 255),
(4, 256);

View File

@@ -0,0 +1,19 @@
-- Update command table with new RBAC permissions
UPDATE `command` SET `permission` = 239 WHERE `name` = 'ban';
UPDATE `command` SET `permission` = 240 WHERE `name` = 'ban account';
UPDATE `command` SET `permission` = 241 WHERE `name` = 'ban character';
UPDATE `command` SET `permission` = 242 WHERE `name` = 'ban ip';
UPDATE `command` SET `permission` = 243 WHERE `name` = 'ban playeraccount';
UPDATE `command` SET `permission` = 244 WHERE `name` = 'baninfo';
UPDATE `command` SET `permission` = 245 WHERE `name` = 'baninfo account';
UPDATE `command` SET `permission` = 246 WHERE `name` = 'baninfo character';
UPDATE `command` SET `permission` = 247 WHERE `name` = 'baninfo ip';
UPDATE `command` SET `permission` = 248 WHERE `name` = 'banlist';
UPDATE `command` SET `permission` = 249 WHERE `name` = 'banlist account';
UPDATE `command` SET `permission` = 250 WHERE `name` = 'banlist character';
UPDATE `command` SET `permission` = 251 WHERE `name` = 'banlist ip';
UPDATE `command` SET `permission` = 252 WHERE `name` = 'unban';
UPDATE `command` SET `permission` = 253 WHERE `name` = 'unban account';
UPDATE `command` SET `permission` = 254 WHERE `name` = 'unban character';
UPDATE `command` SET `permission` = 255 WHERE `name` = 'unban ip';
UPDATE `command` SET `permission` = 256 WHERE `name` = 'unban playeraccount';

View File

@@ -136,6 +136,24 @@ enum RBACPermissions
RBAC_PERM_COMMAND_ARENA_INFO = 236,
RBAC_PERM_COMMAND_ARENA_LOOKUP = 237,
RBAC_PERM_COMMAND_ARENA_RENAME = 238,
RBAC_PERM_COMMAND_BAN = 239,
RBAC_PERM_COMMAND_BAN_ACCOUNT = 240,
RBAC_PERM_COMMAND_BAN_CHARACTER = 241,
RBAC_PERM_COMMAND_BAN_IP = 242,
RBAC_PERM_COMMAND_BAN_PLAYERACCOUNT = 243,
RBAC_PERM_COMMAND_BANINFO = 244,
RBAC_PERM_COMMAND_BANINFO_ACCOUNT = 245,
RBAC_PERM_COMMAND_BANINFO_CHARACTER = 246,
RBAC_PERM_COMMAND_BANINFO_IP = 247,
RBAC_PERM_COMMAND_BANLIST = 248,
RBAC_PERM_COMMAND_BANLIST_ACCOUNT = 249,
RBAC_PERM_COMMAND_BANLIST_CHARACTER = 250,
RBAC_PERM_COMMAND_BANLIST_IP = 251,
RBAC_PERM_COMMAND_UNBAN = 252,
RBAC_PERM_COMMAND_UNBAN_ACCOUNT = 253,
RBAC_PERM_COMMAND_UNBAN_CHARACTER = 254,
RBAC_PERM_COMMAND_UNBAN_IP = 255,
RBAC_PERM_COMMAND_UNBAN_PLAYERACCOUNT = 256,
// custom permissions 1000+
RBAC_PERM_MAX

View File

@@ -39,41 +39,41 @@ public:
{
static ChatCommand unbanCommandTable[] =
{
{ "account", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleUnBanAccountCommand, "", NULL },
{ "character", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleUnBanCharacterCommand, "", NULL },
{ "playeraccount", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleUnBanAccountByCharCommand, "", NULL },
{ "ip", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleUnBanIPCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
{ "account", RBAC_PERM_COMMAND_UNBAN_ACCOUNT, true, &HandleUnBanAccountCommand, "", NULL },
{ "character", RBAC_PERM_COMMAND_UNBAN_CHARACTER, true, &HandleUnBanCharacterCommand, "", NULL },
{ "playeraccount", RBAC_PERM_COMMAND_UNBAN_PLAYERACCOUNT, true, &HandleUnBanAccountByCharCommand, "", NULL },
{ "ip", RBAC_PERM_COMMAND_UNBAN_IP, true, &HandleUnBanIPCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand banlistCommandTable[] =
{
{ "account", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanListAccountCommand, "", NULL },
{ "character", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanListCharacterCommand, "", NULL },
{ "ip", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanListIPCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
{ "account", RBAC_PERM_COMMAND_BANLIST_ACCOUNT, true, &HandleBanListAccountCommand, "", NULL },
{ "character", RBAC_PERM_COMMAND_BANLIST_CHARACTER, true, &HandleBanListCharacterCommand, "", NULL },
{ "ip", RBAC_PERM_COMMAND_BANLIST_IP, true, &HandleBanListIPCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand baninfoCommandTable[] =
{
{ "account", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanInfoAccountCommand, "", NULL },
{ "character", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanInfoCharacterCommand, "", NULL },
{ "ip", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanInfoIPCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
{ "account", RBAC_PERM_COMMAND_BANINFO_ACCOUNT, true, &HandleBanInfoAccountCommand, "", NULL },
{ "character", RBAC_PERM_COMMAND_BANINFO_CHARACTER, true, &HandleBanInfoCharacterCommand, "", NULL },
{ "ip", RBAC_PERM_COMMAND_BANINFO_IP, true, &HandleBanInfoIPCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand banCommandTable[] =
{
{ "account", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanAccountCommand, "", NULL },
{ "character", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanCharacterCommand, "", NULL },
{ "playeraccount", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanAccountByCharCommand, "", NULL },
{ "ip", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleBanIPCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
{ "account", RBAC_PERM_COMMAND_BAN_ACCOUNT, true, &HandleBanAccountCommand, "", NULL },
{ "character", RBAC_PERM_COMMAND_BAN_CHARACTER, true, &HandleBanCharacterCommand, "", NULL },
{ "playeraccount", RBAC_PERM_COMMAND_BAN_PLAYERACCOUNT, true, &HandleBanAccountByCharCommand, "", NULL },
{ "ip", RBAC_PERM_COMMAND_BAN_IP, true, &HandleBanIPCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand commandTable[] =
{
{ "ban", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", banCommandTable },
{ "baninfo", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", baninfoCommandTable },
{ "banlist", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", banlistCommandTable },
{ "unban", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", unbanCommandTable },
{ NULL, 0, false, NULL, "", NULL }
{ "ban", RBAC_PERM_COMMAND_BAN, true, NULL, "", banCommandTable },
{ "baninfo", RBAC_PERM_COMMAND_BANINFO, true, NULL, "", baninfoCommandTable },
{ "banlist", RBAC_PERM_COMMAND_BANLIST, true, NULL, "", banlistCommandTable },
{ "unban", RBAC_PERM_COMMAND_UNBAN, true, NULL, "", unbanCommandTable },
{ NULL, 0, false, NULL, "", NULL }
};
return commandTable;
}