From d8d87c8b67267c1d1c81775d8017d729f67846a1 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sun, 29 Oct 2017 11:47:38 +0100 Subject: [PATCH] Add option to force using the generic Vault permission handler hook Requested in #1350 --- .../authme/permission/PermissionsManager.java | 35 ++++++++++++++----- .../settings/properties/PluginSettings.java | 4 +++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/main/java/fr/xephi/authme/permission/PermissionsManager.java b/src/main/java/fr/xephi/authme/permission/PermissionsManager.java index a1ed91c0..8f3ca797 100644 --- a/src/main/java/fr/xephi/authme/permission/PermissionsManager.java +++ b/src/main/java/fr/xephi/authme/permission/PermissionsManager.java @@ -9,6 +9,8 @@ import fr.xephi.authme.permission.handlers.PermissionHandlerException; import fr.xephi.authme.permission.handlers.PermissionsExHandler; import fr.xephi.authme.permission.handlers.VaultHandler; import fr.xephi.authme.permission.handlers.ZPermissionsHandler; +import fr.xephi.authme.settings.Settings; +import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.util.StringUtils; import org.bukkit.OfflinePlayer; import org.bukkit.Server; @@ -38,6 +40,8 @@ public class PermissionsManager implements Reloadable { private final Server server; private final PluginManager pluginManager; + private Settings settings; + /** * The permission handler that is currently in use. * Null if no permission system is hooked. @@ -51,9 +55,10 @@ public class PermissionsManager implements Reloadable { * @param pluginManager Bukkit plugin manager */ @Inject - public PermissionsManager(Server server, PluginManager pluginManager) { + public PermissionsManager(Server server, PluginManager pluginManager, Settings settings) { this.server = server; this.pluginManager = pluginManager; + this.settings = settings; } /** @@ -70,19 +75,33 @@ public class PermissionsManager implements Reloadable { */ @PostConstruct private void setup() { - // Loop through all the available permissions system types - for (PermissionsSystemType type : PermissionsSystemType.values()) { + if(settings.getProperty(PluginSettings.FORCE_VAULT_HOOK)) { try { - PermissionHandler handler = createPermissionHandler(type); + PermissionHandler handler = createPermissionHandler(PermissionsSystemType.VAULT); if (handler != null) { // Show a success message and return this.handler = handler; - ConsoleLogger.info("Hooked into " + type.getDisplayName() + "!"); + ConsoleLogger.info("Hooked into " + PermissionsSystemType.VAULT.getDisplayName() + "!"); return; } - } catch (Exception ex) { - // An error occurred, show a warning message - ConsoleLogger.logException("Error while hooking into " + type.getDisplayName(), ex); + } catch (PermissionHandlerException e) { + e.printStackTrace(); + } + } else { + // Loop through all the available permissions system types + for (PermissionsSystemType type : PermissionsSystemType.values()) { + try { + PermissionHandler handler = createPermissionHandler(type); + if (handler != null) { + // Show a success message and return + this.handler = handler; + ConsoleLogger.info("Hooked into " + type.getDisplayName() + "!"); + return; + } + } catch (Exception ex) { + // An error occurred, show a warning message + ConsoleLogger.logException("Error while hooking into " + type.getDisplayName(), ex); + } } } diff --git a/src/main/java/fr/xephi/authme/settings/properties/PluginSettings.java b/src/main/java/fr/xephi/authme/settings/properties/PluginSettings.java index d99ffa0b..4742b5f6 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/PluginSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/PluginSettings.java @@ -63,6 +63,10 @@ public final class PluginSettings implements SettingsHolder { public static final Property UNREGISTERED_GROUP = newProperty("GroupOptions.unregisteredPlayerGroup", ""); + @Comment("Forces authme to hook into Vault instead of a specific permission handler system.") + public static final Property FORCE_VAULT_HOOK = + newProperty("settings.forceVaultHook", false); + @Comment({ "Log level: INFO, FINE, DEBUG. Use INFO for general messages,", "FINE for some additional detailed ones (like password failed),",