Update PEX WEPIF resolver to use superperms where possible

This commit is contained in:
zml 2013-08-31 23:00:49 -07:00
parent 89e9829f28
commit 43b8c2cd9b
2 changed files with 28 additions and 37 deletions

View File

@ -32,8 +32,8 @@ import java.util.List;
public class DinnerPermsResolver implements PermissionsResolver {
private static final String GROUP_PREFIX = "group.";
private final Server server;
public static final String GROUP_PREFIX = "group.";
protected final Server server;
public DinnerPermsResolver(Server server) {
this.server = server;
@ -115,7 +115,7 @@ public class DinnerPermsResolver implements PermissionsResolver {
}
return groupNames.toArray(new String[groupNames.size()]);
}
public Permissible getPermissible(OfflinePlayer offline) {
if (offline == null) return null;
Permissible perm = null;
@ -130,7 +130,8 @@ public class DinnerPermsResolver implements PermissionsResolver {
/**
* Checks the permission from dinnerperms
* @param perms Permissible to check for
*
* @param perms Permissible to check for
* @param permission The permission to check
* @return -1 if the permission is explicitly denied, 1 if the permission is allowed,
* 0 if the permission is denied by a default.

View File

@ -23,13 +23,12 @@ import com.sk89q.util.yaml.YAMLProcessor;
import org.bukkit.OfflinePlayer;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permissible;
import ru.tehkode.permissions.PermissionManager;
import ru.tehkode.permissions.PermissionUser;
public class PermissionsExResolver implements PermissionsResolver {
public class PermissionsExResolver extends DinnerPermsResolver {
private final PermissionManager manager;
private final Server server;
public static PermissionsResolver factory(Server server, YAMLProcessor config) {
try {
@ -46,42 +45,21 @@ public class PermissionsExResolver implements PermissionsResolver {
}
public PermissionsExResolver(Server server, PermissionManager manager) {
this.server = server;
super(server);
this.manager = manager;
}
public void load() {
}
public boolean hasPermission(String name, String permission) {
Player player = server.getPlayerExact(name);
return manager.has(name, permission, player == null ? null : player.getWorld().getName());
}
public boolean hasPermission(String worldName, String name, String permission) {
return manager.has(name, permission, worldName);
}
public boolean inGroup(String player, String group) {
PermissionUser user = manager.getUser(player);
if (user == null) {
return false;
}
return user.inGroup(group);
}
public String[] getGroups(String player) {
PermissionUser user = manager.getUser(player);
if (user == null) {
return new String[0];
}
return user.getGroupsNames();
}
public boolean hasPermission(OfflinePlayer player, String permission) {
Player onlinePlayer = player.getPlayer();
return manager.has(player.getName(), permission, onlinePlayer == null ? null : onlinePlayer.getWorld().getName());
Permissible permissible = getPermissible(player);
if (permissible == null) {
return manager.has(player.getName(), permission, null);
} else {
return permissible.hasPermission(permission);
}
}
public boolean hasPermission(String worldName, OfflinePlayer player, String permission) {
@ -89,11 +67,23 @@ public class PermissionsExResolver implements PermissionsResolver {
}
public boolean inGroup(OfflinePlayer player, String group) {
return inGroup(player.getName(), group);
if (getPermissible(player) == null) {
return manager.getUser(player.getName()).inGroup(group);
} else {
return hasPermission(player, GROUP_PREFIX + group);
}
}
public String[] getGroups(OfflinePlayer player) {
return getGroups(player.getName());
if (getPermissible(player) == null) {
PermissionUser user = manager.getUser(player.getName());
if (user == null) {
return new String[0];
}
return user.getGroupsNames();
} else {
return super.getGroups(player);
}
}
public String getDetectionMessage() {