From 559ea659a6d0c0023343b65c19c6641f099f80dc Mon Sep 17 00:00:00 2001 From: Internal-Exception Date: Thu, 16 Jun 2022 16:09:20 -0400 Subject: [PATCH] 1.1.3-pre1 Action permissions --- bungee.yml | 2 +- en-us.yml | 2 ++ plugin.yml | 2 +- pom.xml | 2 +- .../auxprotect/command/LookupCommand.java | 26 +++++++++++++++++-- .../auxprotect/database/SQLManager.java | 9 ++----- .../auxprotect/utils/MyPermission.java | 18 ++++--------- 7 files changed, 36 insertions(+), 25 deletions(-) diff --git a/bungee.yml b/bungee.yml index ad19753..f3a01fa 100644 --- a/bungee.yml +++ b/bungee.yml @@ -1,4 +1,4 @@ name: AuxProtectBungee main: dev.heliosares.auxprotect.bungee.AuxProtectBungee -version: 1.1.2 +version: 1.1.3-pre1 author: Heliosares \ No newline at end of file diff --git a/en-us.yml b/en-us.yml index 7b2678a..089910e 100644 --- a/en-us.yml +++ b/en-us.yml @@ -4,6 +4,7 @@ no-permission: '&cYou don''t have permission for that.' no-permission-flag: '&cYou don''t have permission for that flag.' lookup-invalid-parameter: '&cInvalid parameter: %s' lookup-invalid-syntax: '&cInvalid syntax.' +lookup-invalid-notenough: '&cNot enough arguments.' lookup-error: '&cAn error occured' lookup-unknown-world: '&cUnknown world: %s' lookup-looking: '&9Searching database...' @@ -16,6 +17,7 @@ lookup-toomany: '&cToo many entries. Try narrowing your search. (Over %d entries lookup-incompatible-tables: '&cThose actions are incompatible.' lookup-action-negate: '&cYou cannot negate actions.' lookup-action-perm: '&cYou do not have permission to lookup that action.' +lookup-action-none: '&cYou must specify an action.' command-help-1: '&cYou don''t have a lookup to page through.' purge-purging: '&9Purging ''%s''...' purge-uids: '&9Purging unused UIDs...' diff --git a/plugin.yml b/plugin.yml index 2c30b92..4c79ac4 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: AuxProtect -version: 1.1.2 +version: 1.1.3-pre1 main: dev.heliosares.auxprotect.AuxProtect description: A plugin designed to supplement CoreProtect in a few ways. api-version: 1.13 diff --git a/pom.xml b/pom.xml index 057b2d3..87d9e86 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 AuxProtect AuxProtect - 1.1.2 + 1.1.3-pre1 AuxProtect ${project.artifactId}-${project.version} diff --git a/src/dev/heliosares/auxprotect/command/LookupCommand.java b/src/dev/heliosares/auxprotect/command/LookupCommand.java index 028b8e6..75d198d 100644 --- a/src/dev/heliosares/auxprotect/command/LookupCommand.java +++ b/src/dev/heliosares/auxprotect/command/LookupCommand.java @@ -12,6 +12,7 @@ import dev.heliosares.auxprotect.database.DbEntry; import dev.heliosares.auxprotect.database.EntryAction; import dev.heliosares.auxprotect.database.Results; import dev.heliosares.auxprotect.database.SQLManager.LookupException; +import dev.heliosares.auxprotect.database.Table; import dev.heliosares.auxprotect.utils.ActivitySolver; import dev.heliosares.auxprotect.utils.MoneySolver; import dev.heliosares.auxprotect.utils.MyPermission; @@ -202,7 +203,19 @@ public class LookupCommand { return; } String param = split[1]; - if (token.equalsIgnoreCase("time") || token.equalsIgnoreCase("before") + if (token.equalsIgnoreCase("action")) { + for (String actionStr : param.split(",")) { + EntryAction action = EntryAction.getAction(actionStr); + if (action == null) { + continue; + } + if (!MyPermission.LOOKUP.hasPermission("action." + action.toString().toLowerCase(), + sender)) { + sender.sendMessage(String.format(plugin.translate("lookup-action-perm"), param)); + return; + } + } + } else if (token.equalsIgnoreCase("time") || token.equalsIgnoreCase("before") || token.equalsIgnoreCase("after")) { if (param.contains("-")) { String[] range = param.split("-"); @@ -252,9 +265,18 @@ public class LookupCommand { params.put(token, param.toLowerCase()); } if (params.size() < 1) { - sender.sendMessage(plugin.translate("purge-error-notenough")); + sender.sendMessage(plugin.translate("lookup-invalid-notenough")); return; } + if (!params.containsKey("action")) { + for (EntryAction action : EntryAction.values()) { + if (action.getTable() == Table.AUXPROTECT_MAIN && !MyPermission.LOOKUP + .hasPermission("action." + action.toString().toLowerCase(), sender)) { + sender.sendMessage(plugin.translate("lookup-action-none")); + return; + } + } + } if (bw) { String user = params.get("user"); final String targetOld = params.get("target"); diff --git a/src/dev/heliosares/auxprotect/database/SQLManager.java b/src/dev/heliosares/auxprotect/database/SQLManager.java index af3c494..362f28d 100644 --- a/src/dev/heliosares/auxprotect/database/SQLManager.java +++ b/src/dev/heliosares/auxprotect/database/SQLManager.java @@ -902,9 +902,10 @@ public class SQLManager { } String build = ""; boolean escape = false; + final boolean allowEscape = key.equalsIgnoreCase("target") || key.equalsIgnoreCase("data"); ArrayList values = new ArrayList<>(); for (char current : value.toCharArray()) { - if (current == '\\') { + if (allowEscape && current == '\\') { escape = true; continue; } @@ -970,12 +971,6 @@ public class SQLManager { throw new LookupException(LookupExceptionType.UNKNOWN_ACTION, String.format(plugin.translate("lookup-unknownaction"), param)); } else { - /* - * TODO if (sender != null) { if - * (!MyPermission.LOOKUP.hasPermission(action.toString().toLowerCase(), sender)) - * { sender.sendMessage(String.format(plugin.translate("lookup-action-perm"), - * param)); return null; } } - */ if (table == null) { table = action.getTable(); } else { diff --git a/src/dev/heliosares/auxprotect/utils/MyPermission.java b/src/dev/heliosares/auxprotect/utils/MyPermission.java index b2d6d17..e044b1a 100644 --- a/src/dev/heliosares/auxprotect/utils/MyPermission.java +++ b/src/dev/heliosares/auxprotect/utils/MyPermission.java @@ -19,27 +19,19 @@ public enum MyPermission { return player.hasPermission(node); } - public boolean hasPermission(org.bukkit.command.CommandSender player) { + public boolean hasPermission(MySender player) { return player.hasPermission(node); } - public boolean hasPermission(MySender player) { - return player.hasPermission(node); + public boolean hasPermission(String dot, MySender player) { + return player.hasPermission(node + "." + dot); } public boolean hasPermission(net.md_5.bungee.api.CommandSender player) { return player.hasPermission(node); } - public boolean hasPermission(String dot, Player player) { - return player.hasPermission(node + "." + dot); - } - - public boolean hasPermission(String dot, org.bukkit.command.CommandSender player) { - return player.hasPermission(node + "." + dot); - } - - public boolean hasPermission(String dot, net.md_5.bungee.api.CommandSender player) { - return player.hasPermission(node + "." + dot); + public boolean hasPermission(org.bukkit.command.CommandSender player) { + return player.hasPermission(node); } }