Skip to content

Commit

Permalink
Add PermissionsHandler for Vault.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
drtshock committed Apr 22, 2015
1 parent 7439dc0 commit ac0858d
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 1 deletion.
8 changes: 7 additions & 1 deletion Essentials/pom.xml
Expand Up @@ -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>
Expand All @@ -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>
Expand Up @@ -97,6 +97,18 @@ public String getSuffix(final Player base) {
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)) {
Expand Down
51 changes: 51 additions & 0 deletions Essentials/src/com/earth2me/essentials/perm/VaultHandler.java
@@ -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);
}
}

0 comments on commit ac0858d

Please sign in to comment.