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

This commit is contained in:
Spp
2013-09-10 14:57:01 +02:00
parent 7183a355d2
commit abbc6b2760
5 changed files with 1100 additions and 1011 deletions
@@ -0,0 +1,46 @@
/* cs_server.cpp */
SET @id = 718;
-- Add new permissions
DELETE FROM `rbac_permissions` WHERE `id` BETWEEN @id AND @id+18;
INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
(@id+0, 'server'),
(@id+1, 'server corpses'),
(@id+2, 'server exit'),
(@id+3, 'server idlerestart'),
(@id+4, 'server idlerestart cancel'),
(@id+5, 'server idleshutdown'),
(@id+6, 'server idleshutdown cancel'),
(@id+7, 'server info'),
(@id+8, 'server plimit'),
(@id+9, 'server restart'),
(@id+10, 'server restart cancel'),
(@id+11, 'server set'),
(@id+12, 'server set closed'),
(@id+13, 'server set difftime'),
(@id+14, 'server set loglevel'),
(@id+15, 'server set motd'),
(@id+16, 'server shutdown'),
(@id+17, 'server shutdown cancel'),
(@id+18, 'server motd');
-- Add permissions to "corresponding Commands Role"
DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN @id AND @id+18;
INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES
(4, @id+0),
(4, @id+1),
(4, @id+3),
(4, @id+4),
(4, @id+5),
(4, @id+6),
(4, @id+7),
(4, @id+8),
(4, @id+9),
(4, @id+10),
(4, @id+11),
(4, @id+12),
(4, @id+15),
(4, @id+16),
(4, @id+17),
(4, @id+18);
@@ -3,11 +3,11 @@
SET @id = 710;
-- Update command table with new RBAC permissions
UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'reload';
UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'reload achievements';
UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'reload honor';
UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'reload level';
UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'reload spells';
UPDATE `command` SET `permission` = @id+5 WHERE `name` = 'reload stats';
UPDATE `command` SET `permission` = @id+6 WHERE `name` = 'reload talents';
UPDATE `command` SET `permission` = @id+7 WHERE `name` = 'reload all';
UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'reset';
UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'reset achievements';
UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'reset honor';
UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'reset level';
UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'reset spells';
UPDATE `command` SET `permission` = @id+5 WHERE `name` = 'reset stats';
UPDATE `command` SET `permission` = @id+6 WHERE `name` = 'reset talents';
UPDATE `command` SET `permission` = @id+7 WHERE `name` = 'reset all';
@@ -0,0 +1,24 @@
/* cs_server.cpp */
SET @id = 718;
-- Update command table with new RBAC permissions
UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'server';
UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'server corpses';
UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'server exit';
UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'server idlerestart';
UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'server idlerestart cancel';
UPDATE `command` SET `permission` = @id+5 WHERE `name` = 'server idleshutdown';
UPDATE `command` SET `permission` = @id+6 WHERE `name` = 'server idleshutdown cancel';
UPDATE `command` SET `permission` = @id+7 WHERE `name` = 'server info';
UPDATE `command` SET `permission` = @id+8 WHERE `name` = 'server plimit';
UPDATE `command` SET `permission` = @id+9 WHERE `name` = 'server restart';
UPDATE `command` SET `permission` = @id+10 WHERE `name` = 'server restart cancel';
UPDATE `command` SET `permission` = @id+11 WHERE `name` = 'server set';
UPDATE `command` SET `permission` = @id+12 WHERE `name` = 'server set closed';
UPDATE `command` SET `permission` = @id+13 WHERE `name` = 'server set difftime';
UPDATE `command` SET `permission` = @id+14 WHERE `name` = 'server set loglevel';
UPDATE `command` SET `permission` = @id+15 WHERE `name` = 'server set motd';
UPDATE `command` SET `permission` = @id+16 WHERE `name` = 'server shutdown';
UPDATE `command` SET `permission` = @id+17 WHERE `name` = 'server shutdown cancel';
UPDATE `command` SET `permission` = @id+18 WHERE `name` = 'server motd';
+19
View File
@@ -617,6 +617,25 @@ enum RBACPermissions
RBAC_PERM_COMMAND_RESET_STATS = 715,
RBAC_PERM_COMMAND_RESET_TALENTS = 716,
RBAC_PERM_COMMAND_RESET_ALL = 717,
RBAC_PERM_COMMAND_SERVER = 718,
RBAC_PERM_COMMAND_SERVER_CORPSES = 719,
RBAC_PERM_COMMAND_SERVER_EXIT = 720,
RBAC_PERM_COMMAND_SERVER_IDLERESTART = 721,
RBAC_PERM_COMMAND_SERVER_IDLERESTART_CANCEL = 722,
RBAC_PERM_COMMAND_SERVER_IDLESHUTDOWN = 723,
RBAC_PERM_COMMAND_SERVER_IDLESHUTDOWN_CANCEL = 724,
RBAC_PERM_COMMAND_SERVER_INFO = 725,
RBAC_PERM_COMMAND_SERVER_PLIMIT = 726,
RBAC_PERM_COMMAND_SERVER_RESTART = 727,
RBAC_PERM_COMMAND_SERVER_RESTART_CANCEL = 728,
RBAC_PERM_COMMAND_SERVER_SET = 729,
RBAC_PERM_COMMAND_SERVER_SET_CLOSED = 730,
RBAC_PERM_COMMAND_SERVER_SET_DIFFTIME = 731,
RBAC_PERM_COMMAND_SERVER_SET_LOGLEVEL = 732,
RBAC_PERM_COMMAND_SERVER_SET_MOTD = 733,
RBAC_PERM_COMMAND_SERVER_SHUTDOWN = 734,
RBAC_PERM_COMMAND_SERVER_SHUTDOWN_CANCEL = 735,
RBAC_PERM_COMMAND_SERVER_MOTD = 736,
// custom permissions 1000+
RBAC_PERM_MAX
+23 -23
View File
@@ -39,59 +39,59 @@ public:
{
static ChatCommand serverIdleRestartCommandTable[] =
{
{ "cancel", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCancelCommand, "", NULL },
{ "" , RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerIdleRestartCommand, "", NULL },
{ "cancel", RBAC_PERM_COMMAND_SERVER_IDLERESTART_CANCEL, true, &HandleServerShutDownCancelCommand, "", NULL },
{ "" , RBAC_PERM_COMMAND_SERVER_IDLERESTART, true, &HandleServerIdleRestartCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand serverIdleShutdownCommandTable[] =
{
{ "cancel", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCancelCommand, "", NULL },
{ "" , RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerIdleShutDownCommand, "", NULL },
{ "cancel", RBAC_PERM_COMMAND_SERVER_IDLESHUTDOWN_CANCEL, true, &HandleServerShutDownCancelCommand, "", NULL },
{ "" , RBAC_PERM_COMMAND_SERVER_IDLESHUTDOWN, true, &HandleServerIdleShutDownCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand serverRestartCommandTable[] =
{
{ "cancel", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCancelCommand, "", NULL },
{ "" , RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerRestartCommand, "", NULL },
{ "cancel", RBAC_PERM_COMMAND_SERVER_RESTART_CANCEL, true, &HandleServerShutDownCancelCommand, "", NULL },
{ "" , RBAC_PERM_COMMAND_SERVER_RESTART, true, &HandleServerRestartCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand serverShutdownCommandTable[] =
{
{ "cancel", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCancelCommand, "", NULL },
{ "" , RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCommand, "", NULL },
{ "cancel", RBAC_PERM_COMMAND_SERVER_SHUTDOWN_CANCEL, true, &HandleServerShutDownCancelCommand, "", NULL },
{ "" , RBAC_PERM_COMMAND_SERVER_SHUTDOWN, true, &HandleServerShutDownCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand serverSetCommandTable[] =
{
{ "difftime", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleServerSetDiffTimeCommand, "", NULL },
{ "loglevel", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleServerSetLogLevelCommand, "", NULL },
{ "motd", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerSetMotdCommand, "", NULL },
{ "closed", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerSetClosedCommand, "", NULL },
{ "difftime", RBAC_PERM_COMMAND_SERVER_SET_DIFFTIME, true, &HandleServerSetDiffTimeCommand, "", NULL },
{ "loglevel", RBAC_PERM_COMMAND_SERVER_SET_LOGLEVEL, true, &HandleServerSetLogLevelCommand, "", NULL },
{ "motd", RBAC_PERM_COMMAND_SERVER_SET_MOTD, true, &HandleServerSetMotdCommand, "", NULL },
{ "closed", RBAC_PERM_COMMAND_SERVER_SET_CLOSED, true, &HandleServerSetClosedCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand serverCommandTable[] =
{
{ "corpses", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleServerCorpsesCommand, "", NULL },
{ "exit", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleServerExitCommand, "", NULL },
{ "idlerestart", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverIdleRestartCommandTable },
{ "idleshutdown", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverIdleShutdownCommandTable },
{ "info", RBAC_PERM_PLAYER_COMMANDS, true, &HandleServerInfoCommand, "", NULL },
{ "motd", RBAC_PERM_PLAYER_COMMANDS, true, &HandleServerMotdCommand, "", NULL },
{ "plimit", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerPLimitCommand, "", NULL },
{ "restart", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverRestartCommandTable },
{ "shutdown", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverShutdownCommandTable },
{ "set", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverSetCommandTable },
{ "corpses", RBAC_PERM_COMMAND_SERVER_CORPSES, true, &HandleServerCorpsesCommand, "", NULL },
{ "exit", RBAC_PERM_COMMAND_SERVER_EXIT, true, &HandleServerExitCommand, "", NULL },
{ "idlerestart", RBAC_PERM_COMMAND_SERVER_IDLERESTART, true, NULL, "", serverIdleRestartCommandTable },
{ "idleshutdown", RBAC_PERM_COMMAND_SERVER_IDLESHUTDOWN, true, NULL, "", serverIdleShutdownCommandTable },
{ "info", RBAC_PERM_COMMAND_SERVER_INFO, true, &HandleServerInfoCommand, "", NULL },
{ "motd", RBAC_PERM_COMMAND_SERVER_MOTD, true, &HandleServerMotdCommand, "", NULL },
{ "plimit", RBAC_PERM_COMMAND_SERVER_PLIMIT, true, &HandleServerPLimitCommand, "", NULL },
{ "restart", RBAC_PERM_COMMAND_SERVER_RESTART, true, NULL, "", serverRestartCommandTable },
{ "shutdown", RBAC_PERM_COMMAND_SERVER_SHUTDOWN, true, NULL, "", serverShutdownCommandTable },
{ "set", RBAC_PERM_COMMAND_SERVER_SET, true, NULL, "", serverSetCommandTable },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand commandTable[] =
{
{ "server", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverCommandTable },
{ "server", RBAC_PERM_COMMAND_SERVER, true, NULL, "", serverCommandTable },
{ NULL, 0, false, NULL, "", NULL }
};
return commandTable;