From bdc767ce4795128ac00c2b825736ce0bfac5b3e0 Mon Sep 17 00:00:00 2001 From: Vankka Date: Thu, 20 Jan 2022 01:19:36 +0200 Subject: [PATCH] Add extra checks to vault integration --- .../bukkit/integration/VaultIntegration.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/bukkit/src/main/java/com/discordsrv/bukkit/integration/VaultIntegration.java b/bukkit/src/main/java/com/discordsrv/bukkit/integration/VaultIntegration.java index 377a348a..03350e77 100644 --- a/bukkit/src/main/java/com/discordsrv/bukkit/integration/VaultIntegration.java +++ b/bukkit/src/main/java/com/discordsrv/bukkit/integration/VaultIntegration.java @@ -27,6 +27,7 @@ import net.milkbowl.vault.permission.Permission; import org.bukkit.OfflinePlayer; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.ServicesManager; +import org.jetbrains.annotations.Nullable; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -98,9 +99,13 @@ public class VaultIntegration extends PluginIntegration return true; } - private CompletableFuture unsupported() { + private CompletableFuture unsupported(@Nullable Object vault) { CompletableFuture future = new CompletableFuture<>(); - future.completeExceptionally(new RuntimeException("Vault backend unavailable")); + future.completeExceptionally(new RuntimeException( + vault != null + ? "Vault backend " + vault.getClass().getName() + " unable to complete request" + : "No vault backend available" + )); return future; } @@ -127,8 +132,8 @@ public class VaultIntegration extends PluginIntegration @Override public CompletableFuture hasGroup(UUID player, String groupName) { - if (permission == null) { - return unsupported(); + if (permission == null || !permission.isEnabled() || !permission.hasGroupSupport()) { + return unsupported(permission); } return supply(() -> { @@ -139,8 +144,8 @@ public class VaultIntegration extends PluginIntegration @Override public CompletableFuture addGroup(UUID player, String groupName) { - if (permission == null) { - return unsupported(); + if (permission == null || !permission.isEnabled() || !permission.hasGroupSupport()) { + return unsupported(permission); } return supply(() -> { @@ -152,8 +157,8 @@ public class VaultIntegration extends PluginIntegration @Override public CompletableFuture removeGroup(UUID player, String groupName) { - if (permission == null) { - return unsupported(); + if (permission == null || !permission.isEnabled() || !permission.hasGroupSupport()) { + return unsupported(permission); } return supply(() -> { @@ -165,8 +170,8 @@ public class VaultIntegration extends PluginIntegration @Override public CompletableFuture hasPermission(UUID player, String permissionNode) { - if (permission == null) { - return unsupported(); + if (permission == null || !permission.isEnabled()) { + return unsupported(permission); } return supply(() -> { @@ -177,8 +182,8 @@ public class VaultIntegration extends PluginIntegration @Override public CompletableFuture getPrefix(UUID player) { - if (chat == null) { - return unsupported(); + if (chat == null || !chat.isEnabled()) { + return unsupported(chat); } return supply(() -> { @@ -189,8 +194,8 @@ public class VaultIntegration extends PluginIntegration @Override public CompletableFuture getSuffix(UUID player) { - if (chat == null) { - return unsupported(); + if (chat == null || !chat.isEnabled()) { + return unsupported(chat); } return supply(() -> {