Add PermissionsHandler for Vault.

We'll use the VaultAPI if it's there for group checks.
This will also allow us to default to Player#hasPermission from Bukkit instead of going through each permission plugin.
This commit is contained in:
drtshock 2015-04-22 10:42:27 -05:00
parent 7439dc01a5
commit ac0858dcdb
3 changed files with 70 additions and 1 deletions

View File

@ -129,7 +129,7 @@
<dependency>
<groupId>net.milkbowl.vault</groupId>
<artifactId>Vault</artifactId>
<version>1.2.32</version>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>zPermissions</groupId>
@ -139,4 +139,10 @@
<systemPath>${project.basedir}/../lib/zPermissions.jar</systemPath>
</dependency>
</dependencies>
<repositories>
<repository>
<id>vault-repo</id>
<url>http://nexus.theyeticave.net/content/repositories/pub_releases</url>
</repository>
</repositories>
</project>

View File

@ -97,6 +97,18 @@ public class PermissionsHandler implements IPermissionsHandler {
public void checkPermissions() {
final PluginManager pluginManager = ess.getServer().getPluginManager();
final Plugin vaultAPI = pluginManager.getPlugin("Vault");
if (vaultAPI != null && vaultAPI.isEnabled()) {
if (!(handler instanceof VaultHandler)) {
VaultHandler vault = new VaultHandler(ess);
if (vault.setupPermissions()) {
LOGGER.log(Level.INFO, "Essentials: Using Vault based permissions.");
handler = vault;
return;
}
}
}
final Plugin permExPlugin = pluginManager.getPlugin("PermissionsEx");
if (permExPlugin != null && permExPlugin.isEnabled()) {
if (!(handler instanceof PermissionsExHandler)) {

View File

@ -0,0 +1,51 @@
package com.earth2me.essentials.perm;
import com.earth2me.essentials.Essentials;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
import java.util.Arrays;
import java.util.List;
public class VaultHandler extends SuperpermsHandler {
private Essentials plugin;
private static Permission perms = null;
public VaultHandler(Essentials plugin) {
this.plugin = plugin;
}
public boolean setupPermissions() {
try {
Class.forName("net.milkbowl.vault.permission.Permission");
} catch (ClassNotFoundException e) {
return false;
}
RegisteredServiceProvider<Permission> rsp = plugin.getServer().getServicesManager().getRegistration(Permission.class);
perms = rsp.getProvider();
return perms != null;
}
@Override
public String getGroup(final Player base) {
return perms.getPrimaryGroup(base);
}
@Override
public List<String> getGroups(final Player base) {
return Arrays.asList(perms.getPlayerGroups(base));
}
@Override
public boolean inGroup(final Player base, final String group) {
return perms.playerInGroup(base, group);
}
@Override
public boolean hasPermission(final Player base, String node) {
return base.hasPermission(node);
}
}