package fr.xephi.authme.permission.handlers;
import fr.xephi.authme.permission.PermissionNode;
import fr.xephi.authme.permission.PermissionsSystemType;
import org.bukkit.entity.Player;
import ru.tehkode.permissions.PermissionManager;
import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;
import java.util.ArrayList;
import java.util.List;
/**
* Handler for PermissionsEx.
*
* @see PermissionsEx Bukkit page
* @see PermissionsEx on Github
*/
public class PermissionsExHandler implements PermissionHandler {
private PermissionManager permissionManager;
public PermissionsExHandler() throws PermissionHandlerException {
permissionManager = PermissionsEx.getPermissionManager();
if (permissionManager == null) {
throw new PermissionHandlerException("Could not get manager of PermissionsEx");
}
}
@Override
public boolean addToGroup(Player player, String group) {
if (!PermissionsEx.getPermissionManager().getGroupNames().contains(group)) {
return false;
}
PermissionUser user = PermissionsEx.getUser(player);
user.addGroup(group);
return true;
}
@Override
public boolean hasGroupSupport() {
return true;
}
@Override
public boolean hasPermissionOffline(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);
return user.inGroup(group);
}
@Override
public boolean removeFromGroup(Player player, String group) {
PermissionUser user = permissionManager.getUser(player);
user.removeGroup(group);
return true;
}
@Override
public boolean setGroup(Player player, String group) {
List groups = new ArrayList<>();
groups.add(group);
PermissionUser user = permissionManager.getUser(player);
user.setParentsIdentifier(groups);
return true;
}
@Override
public List getGroups(Player player) {
PermissionUser user = permissionManager.getUser(player);
return user.getParentIdentifiers(null);
}
@Override
public PermissionsSystemType getPermissionSystem() {
return PermissionsSystemType.PERMISSIONS_EX;
}
}