Add ability to check permissions by player name

This commit is contained in:
EbonJaguar
2016-06-14 22:47:35 -04:00
parent 367f785610
commit 5870a4a433
11 changed files with 99 additions and 1 deletions
@@ -27,6 +27,11 @@ public class BPermissionsHandler implements PermissionHandler {
return ApiLayer.hasPermission(player.getWorld().getName(), CalculableType.USER, player.getName(), node.getNode());
}
@Override
public boolean hasPermission(String name, PermissionNode node) {
return ApiLayer.hasPermission(null, CalculableType.USER, name, node.getNode());
}
@Override
public boolean isInGroup(Player player, String group) {
return ApiLayer.hasGroup(player.getWorld().getName(), CalculableType.USER, player.getName(), group);
@@ -3,6 +3,7 @@ package fr.xephi.authme.permission.handlers;
import fr.xephi.authme.permission.PermissionNode;
import fr.xephi.authme.permission.PermissionsSystemType;
import org.anjocaido.groupmanager.GroupManager;
import org.anjocaido.groupmanager.data.User;
import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@@ -35,6 +36,13 @@ public class GroupManagerHandler implements PermissionHandler {
return handler != null && handler.has(player, node.getNode());
}
@Override
public boolean hasPermission(String name, PermissionNode node) {
final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissionsByPlayerName(name);
List<String> perms = handler.getAllPlayersPermissions(name);
return perms.contains(node.getNode());
}
@Override
public boolean isInGroup(Player player, String group) {
final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player);
@@ -38,6 +38,17 @@ public interface PermissionHandler {
*/
boolean hasPermission(Player player, PermissionNode node);
/**
* Check if a player has permission by their name.
* Used to check an offline player's permission.
*
* @param name The player's name.
* @param node The permission node.
*
* @return True if the player has permission.
*/
boolean hasPermission(String name, PermissionNode node);
/**
* Check whether the player is in the specified group.
*
@@ -25,6 +25,11 @@ public class PermissionsBukkitHandler implements PermissionHandler {
return player.hasPermission(node.getNode());
}
@Override
public boolean hasPermission(String name, PermissionNode node) {
return false;
}
@Override
public boolean isInGroup(Player player, String group) {
List<String> groupNames = getGroups(player);
@@ -42,6 +42,12 @@ public class PermissionsExHandler implements PermissionHandler {
return user.has(node.getNode());
}
@Override
public boolean hasPermission(String name, PermissionNode node) {
PermissionUser user = permissionManager.getUser(name);
return user.has(node.getNode());
}
@Override
public boolean isInGroup(Player player, String group) {
PermissionUser user = permissionManager.getUser(player);
@@ -31,6 +31,11 @@ public class VaultHandler implements PermissionHandler {
return vaultProvider.has(player, node.getNode());
}
@Override
public boolean hasPermission(String name, PermissionNode node) {
return vaultProvider.has("", name, node.getNode());
}
@Override
public boolean isInGroup(Player player, String group) {
return vaultProvider.playerInGroup(player, group);
@@ -4,6 +4,7 @@ import fr.xephi.authme.permission.PermissionNode;
import fr.xephi.authme.permission.PermissionsSystemType;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.BookMeta;
import org.tyrannyofheaven.bukkit.zPermissions.ZPermissionsService;
import java.util.ArrayList;
@@ -37,6 +38,15 @@ public class ZPermissionsHandler implements PermissionHandler {
return node.getDefaultPermission().evaluate(player);
}
@Override
public boolean hasPermission(String name, PermissionNode node) {
Map<String, Boolean> perms = zPermissionsService.getPlayerPermissions(null, null, name);
if (perms.containsKey(node.getNode()))
return perms.get(node.getNode());
else
return false;
}
@Override
public boolean isInGroup(Player player, String group) {
return getGroups(player).contains(group);