Add player permissions check API

This commit is contained in:
Mike Primm 2012-03-24 23:29:31 -05:00
parent faa1948225
commit 8f9d2c01c2
8 changed files with 122 additions and 1 deletions

View File

@ -276,6 +276,20 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
} }
return null; return null;
} }
@Override
public Set<String> checkPlayerPermissions(String player, Set<String> perms) {
OfflinePlayer p = getServer().getOfflinePlayer(player);
if(p.isBanned())
return new HashSet<String>();
Set<String> rslt = permissions.hasOfflinePermissions(player, perms);
if (rslt == null) {
rslt = new HashSet<String>();
if(p.isOp()) {
rslt.addAll(perms);
}
}
return rslt;
}
} }
/** /**
* Player access abstraction class * Player access abstraction class

View File

@ -1,5 +1,10 @@
package org.dynmap.bukkit.permissions; package org.dynmap.bukkit.permissions;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.dynmap.Log; import org.dynmap.Log;
@ -28,4 +33,19 @@ public class BukkitPermissions implements PermissionProvider {
? player.hasPermission(name + "." + permission) || player.hasPermission(name + ".*") ? player.hasPermission(name + "." + permission) || player.hasPermission(name + ".*")
: true; : true;
} }
@Override
public Set<String> hasOfflinePermissions(String player, Set<String> perms) {
Player p = Bukkit.getPlayerExact(name);
HashSet<String> hasperms = null;
if (p != null) {
hasperms = new HashSet<String>();
for(String perm : perms) {
if (p.hasPermission(perm)) {
hasperms.add(perm);
}
}
}
return hasperms;
}
} }

View File

@ -1,5 +1,9 @@
package org.dynmap.bukkit.permissions; package org.dynmap.bukkit.permissions;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -38,4 +42,19 @@ public class NijikokunPermissions implements PermissionProvider {
? permissions.has(player, name + "." + permission) || permissions.has(player, name + ".*") ? permissions.has(player, name + "." + permission) || permissions.has(player, name + ".*")
: true; : true;
} }
@Override
public Set<String> hasOfflinePermissions(String player, Set<String> perms) {
HashSet<String> hasperms = null;
Player plyr = Bukkit.getPlayerExact(player);
if(plyr != null) {
hasperms = new HashSet<String>();
for (String pp : perms) {
if (permissions.has(plyr, pp)) {
hasperms.add(pp);
}
}
}
return hasperms;
}
} }

View File

@ -1,6 +1,7 @@
package org.dynmap.bukkit.permissions; package org.dynmap.bukkit.permissions;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -24,4 +25,8 @@ public class OpPermissions implements PermissionProvider {
: true : true
: true; : true;
} }
@Override
public Set<String> hasOfflinePermissions(String player, Set<String> perms) {
return null;
}
} }

View File

@ -1,5 +1,8 @@
package org.dynmap.bukkit.permissions; package org.dynmap.bukkit.permissions;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -7,6 +10,7 @@ import org.bukkit.plugin.Plugin;
import org.dynmap.Log; import org.dynmap.Log;
import ru.tehkode.permissions.PermissionManager; import ru.tehkode.permissions.PermissionManager;
import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx; import ru.tehkode.permissions.bukkit.PermissionsEx;
public class PEXPermissions implements PermissionProvider { public class PEXPermissions implements PermissionProvider {
@ -34,4 +38,18 @@ public class PEXPermissions implements PermissionProvider {
Player player = sender instanceof Player ? (Player) sender : null; Player player = sender instanceof Player ? (Player) sender : null;
return (player != null) ? pm.has(player, name + "." + permission) : true; return (player != null) ? pm.has(player, name + "." + permission) : true;
} }
@Override
public Set<String> hasOfflinePermissions(String player, Set<String> perms) {
HashSet<String> hasperms = new HashSet<String>();
PermissionUser pu = pm.getUser(player);
if(pu != null) {
for (String pp : perms) {
if (pu.has(pp)) {
hasperms.add(pp);
}
}
}
return hasperms;
}
} }

View File

@ -1,5 +1,9 @@
package org.dynmap.bukkit.permissions; package org.dynmap.bukkit.permissions;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -9,6 +13,10 @@ import org.dynmap.Log;
import com.nijiko.permissions.PermissionHandler; import com.nijiko.permissions.PermissionHandler;
import com.platymuus.bukkit.permissions.PermissionsPlugin; import com.platymuus.bukkit.permissions.PermissionsPlugin;
import de.bananaco.bpermissions.api.ApiLayer;
import de.bananaco.bpermissions.api.util.CalculableType;
import de.bananaco.bpermissions.api.util.Permission;
public class PermBukkitPermissions implements PermissionProvider { public class PermBukkitPermissions implements PermissionProvider {
String name; String name;
PermissionsPlugin plugin; PermissionsPlugin plugin;
@ -33,4 +41,17 @@ public class PermBukkitPermissions implements PermissionProvider {
Player player = sender instanceof Player ? (Player) sender : null; Player player = sender instanceof Player ? (Player) sender : null;
return (player != null) ? plugin.getPlayerInfo(player.getName()).getPermissions().containsKey(name + "." + permission) : true; return (player != null) ? plugin.getPlayerInfo(player.getName()).getPermissions().containsKey(name + "." + permission) : true;
} }
@Override
public Set<String> hasOfflinePermissions(String player, Set<String> perms) {
Map<String, Boolean> prm = plugin.getPlayerInfo(player).getPermissions();
HashSet<String> hasperms = new HashSet<String>();
for (String pp : perms) {
Boolean pb = prm.get(pp);
if ((pb != null) && pb.booleanValue()) {
hasperms.add(pp);
}
}
return hasperms;
}
} }

View File

@ -1,7 +1,11 @@
package org.dynmap.bukkit.permissions; package org.dynmap.bukkit.permissions;
import java.util.Set;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public interface PermissionProvider { public interface PermissionProvider {
boolean has(CommandSender sender, String permission); boolean has(CommandSender sender, String permission);
Set<String> hasOfflinePermissions(String player, Set<String> perms);
} }

View File

@ -1,5 +1,9 @@
package org.dynmap.bukkit.permissions; package org.dynmap.bukkit.permissions;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -10,9 +14,11 @@ import ru.tehkode.permissions.bukkit.PermissionsEx;
import de.bananaco.bpermissions.api.ApiLayer; import de.bananaco.bpermissions.api.ApiLayer;
import de.bananaco.bpermissions.api.util.CalculableType; import de.bananaco.bpermissions.api.util.CalculableType;
import de.bananaco.bpermissions.api.util.Permission;
public class bPermPermissions implements PermissionProvider { public class bPermPermissions implements PermissionProvider {
String name; String name;
String defworld;
public static bPermPermissions create(Server server, String name) { public static bPermPermissions create(Server server, String name) {
Plugin permissionsPlugin = server.getPluginManager().getPlugin("bPermissions"); Plugin permissionsPlugin = server.getPluginManager().getPlugin("bPermissions");
@ -25,11 +31,25 @@ public class bPermPermissions implements PermissionProvider {
public bPermPermissions(String name) { public bPermPermissions(String name) {
this.name = name; this.name = name;
defworld = Bukkit.getServer().getWorlds().get(0).getName();
} }
@Override @Override
public boolean has(CommandSender sender, String permission) { public boolean has(CommandSender sender, String permission) {
Player player = sender instanceof Player ? (Player) sender : null; Player player = sender instanceof Player ? (Player) sender : null;
return (player != null) ? ApiLayer.hasPermission(player.getWorld().getName(), CalculableType.USER, player.getName(), name + "." + permission) : true; return (player != null) ? ApiLayer.hasPermission(defworld, CalculableType.USER, player.getName(), name + "." + permission) : true;
}
@Override
public Set<String> hasOfflinePermissions(String player, Set<String> perms) {
Permission[] p = ApiLayer.getPermissions(defworld, CalculableType.USER, player);
HashSet<String> hasperms = new HashSet<String>();
for (int i = 0; i < p.length; i++) {
if (p[i].isTrue() && perms.contains(p[i].name())) {
hasperms.add(p[i].name());
} }
} }
return hasperms;
}
}