Add option to force using the generic Vault permission handler hook

Requested in #1350
This commit is contained in:
Gabriele C 2017-10-29 11:47:38 +01:00
parent e3dd719b0e
commit d8d87c8b67
2 changed files with 31 additions and 8 deletions

View File

@ -9,6 +9,8 @@ import fr.xephi.authme.permission.handlers.PermissionHandlerException;
import fr.xephi.authme.permission.handlers.PermissionsExHandler; import fr.xephi.authme.permission.handlers.PermissionsExHandler;
import fr.xephi.authme.permission.handlers.VaultHandler; import fr.xephi.authme.permission.handlers.VaultHandler;
import fr.xephi.authme.permission.handlers.ZPermissionsHandler; 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 fr.xephi.authme.util.StringUtils;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.Server; import org.bukkit.Server;
@ -38,6 +40,8 @@ public class PermissionsManager implements Reloadable {
private final Server server; private final Server server;
private final PluginManager pluginManager; private final PluginManager pluginManager;
private Settings settings;
/** /**
* The permission handler that is currently in use. * The permission handler that is currently in use.
* Null if no permission system is hooked. * Null if no permission system is hooked.
@ -51,9 +55,10 @@ public class PermissionsManager implements Reloadable {
* @param pluginManager Bukkit plugin manager * @param pluginManager Bukkit plugin manager
*/ */
@Inject @Inject
public PermissionsManager(Server server, PluginManager pluginManager) { public PermissionsManager(Server server, PluginManager pluginManager, Settings settings) {
this.server = server; this.server = server;
this.pluginManager = pluginManager; this.pluginManager = pluginManager;
this.settings = settings;
} }
/** /**
@ -70,19 +75,33 @@ public class PermissionsManager implements Reloadable {
*/ */
@PostConstruct @PostConstruct
private void setup() { private void setup() {
// Loop through all the available permissions system types if(settings.getProperty(PluginSettings.FORCE_VAULT_HOOK)) {
for (PermissionsSystemType type : PermissionsSystemType.values()) {
try { try {
PermissionHandler handler = createPermissionHandler(type); PermissionHandler handler = createPermissionHandler(PermissionsSystemType.VAULT);
if (handler != null) { if (handler != null) {
// Show a success message and return // Show a success message and return
this.handler = handler; this.handler = handler;
ConsoleLogger.info("Hooked into " + type.getDisplayName() + "!"); ConsoleLogger.info("Hooked into " + PermissionsSystemType.VAULT.getDisplayName() + "!");
return; return;
} }
} catch (Exception ex) { } catch (PermissionHandlerException e) {
// An error occurred, show a warning message e.printStackTrace();
ConsoleLogger.logException("Error while hooking into " + type.getDisplayName(), ex); }
} 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);
}
} }
} }

View File

@ -63,6 +63,10 @@ public final class PluginSettings implements SettingsHolder {
public static final Property<String> UNREGISTERED_GROUP = public static final Property<String> UNREGISTERED_GROUP =
newProperty("GroupOptions.unregisteredPlayerGroup", ""); newProperty("GroupOptions.unregisteredPlayerGroup", "");
@Comment("Forces authme to hook into Vault instead of a specific permission handler system.")
public static final Property<Boolean> FORCE_VAULT_HOOK =
newProperty("settings.forceVaultHook", false);
@Comment({ @Comment({
"Log level: INFO, FINE, DEBUG. Use INFO for general messages,", "Log level: INFO, FINE, DEBUG. Use INFO for general messages,",
"FINE for some additional detailed ones (like password failed),", "FINE for some additional detailed ones (like password failed),",