Core/RBAC: Move account commands to RBAC (using individual permissions)
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
-- Add new permissions
|
||||
DELETE FROM `rbac_permissions` WHERE `id` BETWEEN 200 AND 216;
|
||||
INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
|
||||
(217, 'Command: .account'),
|
||||
(218, 'Command: .account addon'),
|
||||
(219, 'Command: .account create'),
|
||||
(220, 'Command: .account delete'),
|
||||
(221, 'Command: .account lock'),
|
||||
(222, 'Command: .account lock country'),
|
||||
(223, 'Command: .account lock ip'),
|
||||
(224, 'Command: .account onlinelist'),
|
||||
(225, 'Command: .account password'),
|
||||
(226, 'Command: .account set'),
|
||||
(227, 'Command: .account set addon'),
|
||||
(228, 'Command: .account set gmlevel'),
|
||||
(229, 'Command: .account set password');
|
||||
|
||||
-- Add Permissions to "corresponding Commands Role"
|
||||
DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN 217 AND 229;
|
||||
INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES
|
||||
(1, 217),
|
||||
(2, 218),
|
||||
(1, 221),
|
||||
(1, 222),
|
||||
(1, 223),
|
||||
(1, 225),
|
||||
(4, 226),
|
||||
(4, 227);
|
||||
@@ -1,4 +1,4 @@
|
||||
ALTER TABLE `command` CHANGE `security` `permission` UNSIGNED SMALLINT(5) DEFAULT 0 NOT NULL;
|
||||
ALTER TABLE `command` CHANGE `security` `permission` SMALLINT(5) UNSIGNED DEFAULT 0 NOT NULL;
|
||||
|
||||
-- Player commands
|
||||
UPDATE `command` SET `permission` = 7 WHERE `permission` = 0;
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
-- Update command table with new RBAC permissions
|
||||
UPDATE `command` SET `permission` = 217 WHERE `name` = 'account';
|
||||
UPDATE `command` SET `permission` = 218 WHERE `name` = 'account addon';
|
||||
UPDATE `command` SET `permission` = 219 WHERE `name` = 'account create';
|
||||
UPDATE `command` SET `permission` = 220 WHERE `name` = 'account delete';
|
||||
UPDATE `command` SET `permission` = 221 WHERE `name` = 'account lock';
|
||||
UPDATE `command` SET `permission` = 222 WHERE `name` = 'account lock country';
|
||||
UPDATE `command` SET `permission` = 223 WHERE `name` = 'account lock ip';
|
||||
UPDATE `command` SET `permission` = 224 WHERE `name` = 'account onlinelist';
|
||||
UPDATE `command` SET `permission` = 225 WHERE `name` = 'account password';
|
||||
UPDATE `command` SET `permission` = 226 WHERE `name` = 'account set';
|
||||
UPDATE `command` SET `permission` = 227 WHERE `name` = 'account set addon';
|
||||
UPDATE `command` SET `permission` = 228 WHERE `name` = 'account set gmlevel';
|
||||
UPDATE `command` SET `permission` = 229 WHERE `name` = 'account set password';
|
||||
@@ -114,6 +114,19 @@ enum RBACPermissions
|
||||
RBAC_PERM_COMMAND_RBAC_LIST_GROUPS = 214,
|
||||
RBAC_PERM_COMMAND_RBAC_LIST_ROLES = 215,
|
||||
RBAC_PERM_COMMAND_RBAC_LIST_PERMS = 216,
|
||||
RBAC_PERM_COMMAND_ACCOUNT = 217,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_ADDON = 218,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_CREATE = 219,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_DELETE = 220,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_LOCK = 221,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_LOCK_COUNTRY = 222,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_LOCK_IP = 223,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_ONLINE_LIST = 224,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_PASSWORD = 225,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_SET = 226,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_SET_ADDON = 227,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_SET_GMLEVEL = 228,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_SET_PASSWORD = 229,
|
||||
|
||||
// custom permissions 1000+
|
||||
RBAC_PERM_MAX
|
||||
|
||||
@@ -37,33 +37,33 @@ public:
|
||||
{
|
||||
static ChatCommand accountSetCommandTable[] =
|
||||
{
|
||||
{ "addon", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleAccountSetAddonCommand, "", NULL },
|
||||
{ "gmlevel", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleAccountSetGmLevelCommand, "", NULL },
|
||||
{ "password", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleAccountSetPasswordCommand, "", NULL },
|
||||
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
|
||||
{ "addon", RBAC_PERM_COMMAND_ACCOUNT_SET_ADDON, true, &HandleAccountSetAddonCommand, "", NULL },
|
||||
{ "gmlevel", RBAC_PERM_COMMAND_ACCOUNT_SET_GMLEVEL, true, &HandleAccountSetGmLevelCommand, "", NULL },
|
||||
{ "password", RBAC_PERM_COMMAND_ACCOUNT_SET_PASSWORD, true, &HandleAccountSetPasswordCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
static ChatCommand accountLockCommandTable[] =
|
||||
{
|
||||
{ "country", RBAC_PERM_PLAYER_COMMANDS, true, &HandleAccountLockCountryCommand, "", NULL },
|
||||
{ "ip", RBAC_PERM_PLAYER_COMMANDS, true, &HandleAccountLockIpCommand, "", NULL },
|
||||
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL },
|
||||
{ "country", RBAC_PERM_COMMAND_ACCOUNT_LOCK_COUNTRY, true, &HandleAccountLockCountryCommand, "", NULL },
|
||||
{ "ip", RBAC_PERM_COMMAND_ACCOUNT_LOCK_IP, true, &HandleAccountLockIpCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
static ChatCommand accountCommandTable[] =
|
||||
{
|
||||
{ "addon", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleAccountAddonCommand, "", NULL },
|
||||
{ "create", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleAccountCreateCommand, "", NULL },
|
||||
{ "delete", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleAccountDeleteCommand, "", NULL },
|
||||
{ "onlinelist", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleAccountOnlineListCommand, "", NULL },
|
||||
{ "lock", RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", accountLockCommandTable },
|
||||
{ "set", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", accountSetCommandTable },
|
||||
{ "password", RBAC_PERM_PLAYER_COMMANDS, false, &HandleAccountPasswordCommand, "", NULL },
|
||||
{ "", RBAC_PERM_PLAYER_COMMANDS, false, &HandleAccountCommand, "", NULL },
|
||||
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
|
||||
{ "addon", RBAC_PERM_COMMAND_ACCOUNT_ADDON, false, &HandleAccountAddonCommand, "", NULL },
|
||||
{ "create", RBAC_PERM_COMMAND_ACCOUNT_CREATE, true, &HandleAccountCreateCommand, "", NULL },
|
||||
{ "delete", RBAC_PERM_COMMAND_ACCOUNT_DELETE, true, &HandleAccountDeleteCommand, "", NULL },
|
||||
{ "onlinelist", RBAC_PERM_COMMAND_ACCOUNT_ONLINE_LIST, true, &HandleAccountOnlineListCommand, "", NULL },
|
||||
{ "lock", RBAC_PERM_COMMAND_ACCOUNT_LOCK, false, NULL, "", accountLockCommandTable },
|
||||
{ "set", RBAC_PERM_COMMAND_ACCOUNT_SET, true, NULL, "", accountSetCommandTable },
|
||||
{ "password", RBAC_PERM_COMMAND_ACCOUNT_PASSWORD, false, &HandleAccountPasswordCommand, "", NULL },
|
||||
{ "", RBAC_PERM_COMMAND_ACCOUNT, false, &HandleAccountCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
static ChatCommand commandTable[] =
|
||||
{
|
||||
{ "account", RBAC_PERM_PLAYER_COMMANDS, true, NULL, "", accountCommandTable },
|
||||
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
|
||||
{ "account", RBAC_PERM_COMMAND_ACCOUNT, true, NULL, "", accountCommandTable },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
return commandTable;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user