From 5dad9e0c54807c24b463979c17ecfb6d3f1f4937 Mon Sep 17 00:00:00 2001 From: Intybyte Date: Sat, 8 Feb 2025 16:19:25 +0100 Subject: [PATCH] Add pipe OR handling for permissions --- .../co/aikar/commands/CommandManager.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/co/aikar/commands/CommandManager.java b/core/src/main/java/co/aikar/commands/CommandManager.java index 4eb16e2b..e541b6ee 100644 --- a/core/src/main/java/co/aikar/commands/CommandManager.java +++ b/core/src/main/java/co/aikar/commands/CommandManager.java @@ -329,12 +329,30 @@ public abstract class CommandManager< if (permission == null || permission.isEmpty()) { return true; } - for (String perm : ACFPatterns.COMMA.split(permission)) { - if (!perm.isEmpty() && !issuer.hasPermission(perm)) { - return false; + + //handle commas as an AND operation + if (permission.contains(",")) { + for (String perm : ACFPatterns.COMMA.split(permission)) { + if (!perm.isEmpty() && !issuer.hasPermission(perm)) { + return false; + } } + return true; } - return true; + + //handle pipe as an OR operation + if (permission.contains("|")) { + for (String perm : ACFPatterns.PIPE.split(permission)) { + perm = perm.trim(); + if (!perm.isEmpty() && issuer.hasPermission(perm)) { + return true; + } + } + return false; + } + + //if none are used just test the permission itself + return issuer.hasPermission(permission); } public synchronized RootCommand getRootCommand(@NotNull String cmd) {