From 39c125d1a3e68e4a732e034d8911d6a37618d6bb Mon Sep 17 00:00:00 2001 From: Xefir Date: Tue, 1 May 2012 16:38:01 +0200 Subject: [PATCH] Change permissions management for special subnodes --- .../bukkit/simplyperms/SimplyCommands.java | 26 ++++++++++++------- src/plugin.yml | 23 ++++++++++++++++ 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/src/net/crystalyx/bukkit/simplyperms/SimplyCommands.java b/src/net/crystalyx/bukkit/simplyperms/SimplyCommands.java index 55110f7..e0ddef9 100755 --- a/src/net/crystalyx/bukkit/simplyperms/SimplyCommands.java +++ b/src/net/crystalyx/bukkit/simplyperms/SimplyCommands.java @@ -231,8 +231,9 @@ public class SimplyCommands implements CommandExecutor { sender.sendMessage(ChatColor.GREEN + "Users in " + ChatColor.WHITE + group + ChatColor.GREEN + " (" + ChatColor.WHITE + count + ChatColor.GREEN + "): " + ChatColor.WHITE + text); return true; } else if (subcommand.equals("setperm")) { - if (split.length >= 4 && !checkPerm(sender, "group.setperm", Arrays.asList(split[3].split(",")))) return true; + if (!checkPerm(sender, "group.setperm")) return true; if (split.length != 4 && split.length != 5) return usage(sender, command, "group setperm"); + if (!checkPerm(sender, "group.setperm", Arrays.asList(split[3].split(",")))) return true; String group = split[2]; String perm = split[3]; boolean value = (split.length != 5) || Boolean.parseBoolean(split[4]); @@ -258,8 +259,9 @@ public class SimplyCommands implements CommandExecutor { sender.sendMessage(ChatColor.GREEN + "Group " + ChatColor.WHITE + group + ChatColor.GREEN + " now has " + ChatColor.WHITE + perm + ChatColor.GREEN + " = " + ChatColor.WHITE + value + ChatColor.GREEN + "."); return true; } else if (subcommand.equals("unsetperm")) { - if (split.length >= 4 && !checkPerm(sender, "group.unsetperm", Arrays.asList(split[3].split(",")))) return true; + if (!checkPerm(sender, "group.unsetperm")) return true; if (split.length != 4) return usage(sender, command, "group unsetperm"); + if (!checkPerm(sender, "group.unsetperm", Arrays.asList(split[3].split(",")))) return true; String group = split[2].toLowerCase(); String perm = split[3]; @@ -316,8 +318,9 @@ public class SimplyCommands implements CommandExecutor { sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is in groups (" + ChatColor.WHITE + count + ChatColor.GREEN + "): " + ChatColor.WHITE + text); return true; } else if (subcommand.equals("setgroup")) { - if (split.length == 4 && !checkPerm(sender, "player.setgroup", Arrays.asList(split[3].split(",")))) return true; + if (!checkPerm(sender, "player.setgroup")) return true; if (split.length != 4) return usage(sender, command, "player setgroup"); + if (!checkPerm(sender, "player.setgroup", Arrays.asList(split[3].split(",")))) return true; String player = split[2].toLowerCase(); String[] groups = split[3].split(","); @@ -331,8 +334,9 @@ public class SimplyCommands implements CommandExecutor { sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is now in " + ChatColor.WHITE + split[3] + ChatColor.GREEN + "."); return true; } else if (subcommand.equals("addgroup")) { - if (split.length == 4 && !checkPerm(sender, "player.addgroup", Arrays.asList(split[3]))) return true; + if (!checkPerm(sender, "player.addgroup")) return true; if (split.length != 4) return usage(sender, command, "player addgroup"); + if (!checkPerm(sender, "player.addgroup", Arrays.asList(split[3]))) return true; String player = split[2].toLowerCase(); String group = split[3]; @@ -347,8 +351,9 @@ public class SimplyCommands implements CommandExecutor { sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is now in " + ChatColor.WHITE + group + ChatColor.GREEN + "."); return true; } else if (subcommand.equals("removegroup")) { - if (split.length == 4 && !checkPerm(sender, "player.removegroup", Arrays.asList(split[3]))) return true; + if (!checkPerm(sender, "player.removegroup")) return true; if (split.length != 4) return usage(sender, command, "player removegroup"); + if (!checkPerm(sender, "player.removegroup", Arrays.asList(split[3]))) return true; String player = split[2].toLowerCase(); String group = split[3]; @@ -378,8 +383,9 @@ public class SimplyCommands implements CommandExecutor { sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is no longer in config file."); return true; } else if (subcommand.equals("setperm")) { - if (split.length >= 4 && !checkPerm(sender, "player.setperm", Arrays.asList(split[3].split(",")))) return true; + if (!checkPerm(sender, "player.setperm")) return true; if (split.length != 4 && split.length != 5) return usage(sender, command, "player setperm"); + if (!checkPerm(sender, "player.setperm", Arrays.asList(split[3].split(",")))) return true; String player = split[2].toLowerCase(); String perm = split[3]; boolean value = (split.length != 5) || Boolean.parseBoolean(split[4]); @@ -396,8 +402,9 @@ public class SimplyCommands implements CommandExecutor { sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " now has " + ChatColor.WHITE + perm + ChatColor.GREEN + " = " + ChatColor.WHITE + value + ChatColor.GREEN + "."); return true; } else if (subcommand.equals("unsetperm")) { - if (split.length >= 4 && !checkPerm(sender, "player.unsetperm", Arrays.asList(split[3].split(",")))) return true; + if (!checkPerm(sender, "player.unsetperm")) return true; if (split.length != 4) return usage(sender, command, "player unsetperm"); + if (!checkPerm(sender, "player.unsetperm", Arrays.asList(split[3].split(",")))) return true; String player = split[2].toLowerCase(); String perm = split[3]; @@ -433,13 +440,14 @@ public class SimplyCommands implements CommandExecutor { } private boolean checkPerm(CommandSender sender, String node, List subnodes) { - boolean ok = sender.hasPermission("permissions." + node); + boolean ok = sender.hasPermission("permissions." + node + ".*"); if (!ok) { for (String subnode : subnodes) { String testnode = ""; for (String sub : subnode.split(".")) { testnode += sub; - if (sender.hasPermission("permissions." + node + "." + testnode)) { + if (sender.hasPermission("permissions." + node + "." + testnode) + || sender.hasPermission("permissions." + node + "." + testnode + ".*")) { ok = true; break; } diff --git a/src/plugin.yml b/src/plugin.yml index 6555312..76a4eac 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -60,7 +60,9 @@ permissions: permissions.group.list: true permissions.group.players: true permissions.group.setperm: true + permissions.group.setperm.*: true permissions.group.unsetperm: true + permissions.group.unsetperm.*: true permissions.group.help: description: Allows viewing of usage for /permissions group. permissions.group.list: @@ -69,32 +71,53 @@ permissions: description: Allows use of /permissions group players. permissions.group.setperm: description: Allows use of /permissions group setperm. + permissions.group.setperm.*: + description: Allows set all permissions node for this group. permissions.group.unsetperm: description: Allows use of /permissions group unsetperm. + permissions.group.unsetperm.*: + description: Allows unset all permissions node for this group. permissions.player.*: description: Allows use of all /permissions player commands. children: permissions.player.help: true permissions.player.groups: true permissions.player.setgroup: true + permissions.player.setgroup.*: true permissions.player.addgroup: true + permissions.player.addgroup.*: true permissions.player.removegroup: true + permissions.player.removegroup.*: true permissions.player.remove: true permissions.player.setperm: true + permissions.player.setperm.*: true permissions.player.unsetperm: true + permissions.player.unsetperm.*: true permissions.player.help: description: Allows viewing of usage for /permissions player. permissions.player.groups: description: Allows use of /permissions player groups. permissions.player.setgroup: description: Allows use of /permissions player setgroup. + permissions.player.setgroup.*: + description: Allows set all groups for this player. permissions.player.addgroup: description: Allows use of /permissions player addgroup. + permissions.player.addgroup.*: + description: Allows add all groups for this player. permissions.player.removegroup: description: Allows use of /permissions player removegroup. + permissions.player.removegroup.*: + description: Allows remove all groups for this player. permissions.player.remove: description: Allows use of /permissions player remove. permissions.player.setperm: description: Allows use of /permissions player setperm. + permissions.player.setperm.*: + description: Allows set all permissions node for this player. permissions.player.unsetperm: description: Allows use of /permissions player unsetperm. + permissions.player.unsetperm.*: + description: Allows unset all permissions node for this player. + permissions.allow.*: + description: Allows player to do everything.