summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2011-08-30 23:26:23 +0200
committersnowleo <schneeleo@gmail.com>2011-08-30 23:26:23 +0200
commit057c9cb3f5e53535d8124326a4bb783dd24700a2 (patch)
tree09e3942f4369400131c6019eea9cba3c582ef942
parentecc1a0acead17745811c3c212268d00c1c86ef78 (diff)
downloadEssentials-057c9cb3f5e53535d8124326a4bb783dd24700a2.tar
Essentials-057c9cb3f5e53535d8124326a4bb783dd24700a2.tar.gz
Essentials-057c9cb3f5e53535d8124326a4bb783dd24700a2.tar.lz
Essentials-057c9cb3f5e53535d8124326a4bb783dd24700a2.tar.xz
Essentials-057c9cb3f5e53535d8124326a4bb783dd24700a2.zip
Minor rewrite of Permissions package, all the stuff is now in one place.
-rw-r--r--Essentials/src/com/earth2me/essentials/Essentials.java14
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java93
-rw-r--r--Essentials/src/com/earth2me/essentials/IEssentials.java6
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/BPermissionsHandler.java21
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java18
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/IPermissionsHandler.java5
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/NullPermissionsHandler.java51
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java17
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/Permissions3Handler.java11
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/PermissionsBukkitHandler.java39
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java19
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java179
-rw-r--r--Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java21
13 files changed, 349 insertions, 145 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java
index 3ea10f64a..d88edbdae 100644
--- a/Essentials/src/com/earth2me/essentials/Essentials.java
+++ b/Essentials/src/com/earth2me/essentials/Essentials.java
@@ -30,6 +30,7 @@ import org.bukkit.command.CommandSender;
import com.earth2me.essentials.commands.IEssentialsCommand;
import com.earth2me.essentials.commands.NoChargeException;
import com.earth2me.essentials.commands.NotEnoughArgumentsException;
+import com.earth2me.essentials.perm.PermissionsHandler;
import com.earth2me.essentials.register.payment.Methods;
import com.earth2me.essentials.signs.SignBlockListener;
import com.earth2me.essentials.signs.SignEntityListener;
@@ -65,7 +66,7 @@ public class Essentials extends JavaPlugin implements IEssentials
private transient final Methods paymentMethod = new Methods();
private transient final static boolean enableErrorLogging = false;
private transient final EssentialsErrorHandler errorHandler = new EssentialsErrorHandler();
- private transient IPermissionsHandler permissionsHandler;
+ private transient PermissionsHandler permissionsHandler;
private transient UserMap userMap;
@Override
@@ -90,7 +91,7 @@ public class Essentials extends JavaPlugin implements IEssentials
this.initialize(null, server, new PluginDescriptionFile(new FileReader(new File("src" + File.separator + "plugin.yml"))), dataFolder, null, null);
settings = new Settings(this);
userMap = new UserMap(this);
- permissionsHandler = new ConfigPermissionsHandler(this);
+ permissionsHandler = new PermissionsHandler(this, false);
Economy.setEss(this);
}
@@ -151,6 +152,7 @@ public class Essentials extends JavaPlugin implements IEssentials
LOGGER.log(Level.INFO, Util.i18n("bukkitFormatChanged"));
}
+ permissionsHandler = new PermissionsHandler(this, settings.useBukkitPermissions());
final EssentialsPluginListener serverListener = new EssentialsPluginListener(this);
pm.registerEvent(Type.PLUGIN_ENABLE, serverListener, Priority.Low, this);
pm.registerEvent(Type.PLUGIN_DISABLE, serverListener, Priority.Low, this);
@@ -665,18 +667,12 @@ public class Essentials extends JavaPlugin implements IEssentials
}
@Override
- public IPermissionsHandler getPermissionsHandler()
+ public PermissionsHandler getPermissionsHandler()
{
return permissionsHandler;
}
@Override
- public void setPermissionsHandler(final IPermissionsHandler handler)
- {
- this.permissionsHandler = handler;
- }
-
- @Override
public BanWorkaround getBans()
{
return bans;
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java
index cd969a10c..e64496171 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java
@@ -1,19 +1,10 @@
package com.earth2me.essentials;
-import com.earth2me.essentials.perm.BPermissionsHandler;
-import com.earth2me.essentials.perm.ConfigPermissionsHandler;
-import com.earth2me.essentials.perm.Permissions3Handler;
-import com.earth2me.essentials.perm.Permissions2Handler;
-import com.earth2me.essentials.perm.PermissionsBukkitHandler;
-import com.earth2me.essentials.perm.PermissionsExHandler;
-import com.earth2me.essentials.perm.SuperpermsHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.event.server.ServerListener;
-import org.bukkit.plugin.Plugin;
-import org.bukkit.plugin.PluginManager;
public class EssentialsPluginListener extends ServerListener implements IConf
@@ -29,7 +20,7 @@ public class EssentialsPluginListener extends ServerListener implements IConf
@Override
public void onPluginEnable(final PluginEnableEvent event)
{
- checkPermissions();
+ ess.getPermissionsHandler().checkPermissions();
if (!ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().setMethod(event.getPlugin()))
{
LOGGER.log(Level.INFO, "[Essentials] Payment method found (" + ess.getPaymentMethod().getMethod().getName() + " version: " + ess.getPaymentMethod().getMethod().getVersion() + ")");
@@ -38,9 +29,9 @@ public class EssentialsPluginListener extends ServerListener implements IConf
}
@Override
- public void onPluginDisable(PluginDisableEvent event)
+ public void onPluginDisable(final PluginDisableEvent event)
{
- checkPermissions();
+ ess.getPermissionsHandler().checkPermissions();
// Check to see if the plugin thats being disabled is the one we are using
if (ess.getPaymentMethod() != null && ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().checkDisabled(event.getPlugin()))
{
@@ -48,84 +39,10 @@ public class EssentialsPluginListener extends ServerListener implements IConf
}
}
- private void checkPermissions()
- {
- final PluginManager pm = ess.getServer().getPluginManager();
- final Plugin permissionsExPlugin = pm.getPlugin("PermissionsEx");
-
- if (permissionsExPlugin == null || !permissionsExPlugin.isEnabled())
- {
- final Plugin permissionsPlugin = pm.getPlugin("Permissions");
- if (permissionsPlugin == null || !permissionsPlugin.isEnabled())
- {
- final Plugin permissionsBukkitPlugin = pm.getPlugin("PermissionsBukkit");
- final Plugin bPermissionsPlugin = pm.getPlugin("bPermissions");
- if (permissionsBukkitPlugin != null && permissionsBukkitPlugin.isEnabled())
- {
- if (!(ess.getPermissionsHandler() instanceof PermissionsBukkitHandler))
- {
- LOGGER.log(Level.INFO, "Essentials: Using PermissionsBukkit based permissions.");
- ess.setPermissionsHandler(new PermissionsBukkitHandler(permissionsBukkitPlugin));
- }
- }
- else if (bPermissionsPlugin != null && bPermissionsPlugin.isEnabled())
- {
- if (!(ess.getPermissionsHandler() instanceof BPermissionsHandler))
- {
- LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions.");
- ess.setPermissionsHandler(new BPermissionsHandler());
- }
- }
- else if (ess.getSettings().useBukkitPermissions())
- {
- if (!(ess.getPermissionsHandler() instanceof SuperpermsHandler))
- {
- LOGGER.log(Level.INFO, "Essentials: Using superperms based permissions.");
- ess.setPermissionsHandler(new SuperpermsHandler());
- }
- }
- else
- {
- if (!(ess.getPermissionsHandler() instanceof ConfigPermissionsHandler))
- {
- LOGGER.log(Level.INFO, "Essentials: Using config based permissions. Enable superperms in config.");
- ess.setPermissionsHandler(new ConfigPermissionsHandler(ess));
- }
- }
- }
- else
- {
- if (permissionsPlugin.getDescription().getVersion().charAt(0) == '3')
- {
- if (!(ess.getPermissionsHandler() instanceof Permissions3Handler))
- {
- LOGGER.log(Level.INFO, "Essentials: Using Permissions 3 based permissions.");
- ess.setPermissionsHandler(new Permissions3Handler(permissionsPlugin));
- }
- }
- else
- {
- if (!(ess.getPermissionsHandler() instanceof Permissions2Handler))
- {
- LOGGER.log(Level.INFO, "Essentials: Using Permissions 2 based permissions.");
- ess.setPermissionsHandler(new Permissions2Handler(permissionsPlugin));
- }
- }
- }
- }
- else
- {
- if (!(ess.getPermissionsHandler() instanceof PermissionsExHandler))
- {
- LOGGER.log(Level.INFO, "Essentials: Using PermissionsEx based permissions.");
- ess.setPermissionsHandler(new PermissionsExHandler());
- }
- }
- }
-
@Override
public void reloadConfig()
{
- checkPermissions();
+ ess.getPermissionsHandler().setUseSuperperms(ess.getSettings().useBukkitPermissions());
+ ess.getPermissionsHandler().checkPermissions();
}
}
diff --git a/Essentials/src/com/earth2me/essentials/IEssentials.java b/Essentials/src/com/earth2me/essentials/IEssentials.java
index 0512b629e..b47ebd5ab 100644
--- a/Essentials/src/com/earth2me/essentials/IEssentials.java
+++ b/Essentials/src/com/earth2me/essentials/IEssentials.java
@@ -1,6 +1,6 @@
package com.earth2me.essentials;
-import com.earth2me.essentials.perm.IPermissionsHandler;
+import com.earth2me.essentials.perm.PermissionsHandler;
import com.earth2me.essentials.register.payment.Methods;
import org.bukkit.World;
import org.bukkit.command.Command;
@@ -57,9 +57,7 @@ public interface IEssentials extends Plugin
TNTExplodeListener getTNTListener();
- IPermissionsHandler getPermissionsHandler();
-
- void setPermissionsHandler(IPermissionsHandler handler);
+ PermissionsHandler getPermissionsHandler();
void showError(final CommandSender sender, final Throwable exception, final String commandLabel);
diff --git a/Essentials/src/com/earth2me/essentials/perm/BPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/BPermissionsHandler.java
index 82f793ee0..90b905113 100644
--- a/Essentials/src/com/earth2me/essentials/perm/BPermissionsHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/BPermissionsHandler.java
@@ -19,28 +19,29 @@ public class BPermissionsHandler extends SuperpermsHandler
@Override
public String getGroup(final Player base)
{
- final PermissionSet pset = wpm.getPermissionSet(base.getWorld());
- if (pset == null)
- {
- return "default";
- }
- final List<String> groups = pset.getGroups(base);
+ final List<String> groups = getGroups(base);
if (groups == null || groups.isEmpty())
{
- return "default";
+ return null;
}
return groups.get(0);
}
@Override
- public boolean inGroup(final Player base, final String group)
+ public List<String> getGroups(final Player base)
{
final PermissionSet pset = wpm.getPermissionSet(base.getWorld());
if (pset == null)
{
- return false;
+ return null;
}
- final List<String> groups = pset.getGroups(base);
+ return pset.getGroups(base);
+ }
+
+ @Override
+ public boolean inGroup(final Player base, final String group)
+ {
+ final List<String> groups = getGroups(base);
if (groups == null || groups.isEmpty())
{
return false;
diff --git a/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java
index 82d285b1f..fad479444 100644
--- a/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java
@@ -1,22 +1,30 @@
package com.earth2me.essentials.perm;
import com.earth2me.essentials.IEssentials;
+import java.util.List;
import org.bukkit.entity.Player;
+import org.bukkit.plugin.Plugin;
public class ConfigPermissionsHandler implements IPermissionsHandler
{
private final transient IEssentials ess;
- public ConfigPermissionsHandler(final IEssentials ess)
+ public ConfigPermissionsHandler(final Plugin ess)
{
- this.ess = ess;
+ this.ess = (IEssentials)ess;
}
@Override
public String getGroup(final Player base)
{
- return "default";
+ return null;
+ }
+
+ @Override
+ public List<String> getGroups(final Player base)
+ {
+ return null;
}
@Override
@@ -42,12 +50,12 @@ public class ConfigPermissionsHandler implements IPermissionsHandler
@Override
public String getPrefix(final Player base)
{
- return "";
+ return null;
}
@Override
public String getSuffix(final Player base)
{
- return "";
+ return null;
}
}
diff --git a/Essentials/src/com/earth2me/essentials/perm/IPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/IPermissionsHandler.java
index c7fddb6c8..27af48e8c 100644
--- a/Essentials/src/com/earth2me/essentials/perm/IPermissionsHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/IPermissionsHandler.java
@@ -1,13 +1,15 @@
package com.earth2me.essentials.perm;
+import java.util.List;
import org.bukkit.entity.Player;
public interface IPermissionsHandler
{
-
String getGroup(Player base);
+ List<String> getGroups(Player base);
+
boolean canBuild(Player base, String group);
boolean inGroup(Player base, String group);
@@ -17,5 +19,4 @@ public interface IPermissionsHandler
String getPrefix(Player base);
String getSuffix(Player base);
-
}
diff --git a/Essentials/src/com/earth2me/essentials/perm/NullPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/NullPermissionsHandler.java
new file mode 100644
index 000000000..b51aeb055
--- /dev/null
+++ b/Essentials/src/com/earth2me/essentials/perm/NullPermissionsHandler.java
@@ -0,0 +1,51 @@
+package com.earth2me.essentials.perm;
+
+import java.util.Collections;
+import java.util.List;
+import org.bukkit.entity.Player;
+
+
+public class NullPermissionsHandler implements IPermissionsHandler
+{
+ @Override
+ public String getGroup(final Player base)
+ {
+ return null;
+ }
+
+ @Override
+ public List<String> getGroups(final Player base)
+ {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean canBuild(final Player base, final String group)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean inGroup(final Player base, final String group)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean hasPermission(final Player base, final String node)
+ {
+ return false;
+ }
+
+ @Override
+ public String getPrefix(final Player base)
+ {
+ return null;
+ }
+
+ @Override
+ public String getSuffix(final Player base)
+ {
+ return null;
+ }
+}
diff --git a/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java b/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java
index 0d7b45cb7..6b5ff5b73 100644
--- a/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java
@@ -2,6 +2,8 @@ package com.earth2me.essentials.perm;
import com.nijiko.permissions.PermissionHandler;
import com.nijikokun.bukkit.Permissions.Permissions;
+import java.util.Arrays;
+import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
@@ -18,8 +20,13 @@ public class Permissions2Handler implements IPermissionsHandler
@Override
public String getGroup(final Player base)
{
- final String group = permissionHandler.getGroup(base.getWorld().getName(), base.getName());
- return group == null ? "default" : group;
+ return permissionHandler.getGroup(base.getWorld().getName(), base.getName());
+ }
+
+ @Override
+ public List<String> getGroups(final Player base)
+ {
+ return Arrays.asList(permissionHandler.getGroups(base.getWorld().getName(), base.getName()));
}
@Override
@@ -43,14 +50,12 @@ public class Permissions2Handler implements IPermissionsHandler
@Override
public String getPrefix(final Player base)
{
- final String prefix = permissionHandler.getGroupPrefix(base.getWorld().getName(), getGroup(base));
- return prefix == null ? "" : prefix;
+ return permissionHandler.getGroupPrefix(base.getWorld().getName(), getGroup(base));
}
@Override
public String getSuffix(final Player base)
{
- final String suffix = permissionHandler.getGroupSuffix(base.getWorld().getName(), getGroup(base));
- return suffix == null ? "" : suffix;
+ return permissionHandler.getGroupSuffix(base.getWorld().getName(), getGroup(base));
}
}
diff --git a/Essentials/src/com/earth2me/essentials/perm/Permissions3Handler.java b/Essentials/src/com/earth2me/essentials/perm/Permissions3Handler.java
index c0ac249a8..190d5b8c5 100644
--- a/Essentials/src/com/earth2me/essentials/perm/Permissions3Handler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/Permissions3Handler.java
@@ -2,6 +2,8 @@ package com.earth2me.essentials.perm;
import com.nijiko.permissions.PermissionHandler;
import com.nijikokun.bukkit.Permissions.Permissions;
+import java.util.Arrays;
+import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
@@ -9,7 +11,7 @@ import org.bukkit.plugin.Plugin;
public class Permissions3Handler implements IPermissionsHandler
{
private final transient PermissionHandler permissionHandler;
-
+
public Permissions3Handler(final Plugin permissionsPlugin)
{
permissionHandler = ((Permissions)permissionsPlugin).getHandler();
@@ -22,6 +24,12 @@ public class Permissions3Handler implements IPermissionsHandler
}
@Override
+ public List<String> getGroups(final Player base)
+ {
+ return Arrays.asList(permissionHandler.getGroups(base.getWorld().getName(), base.getName()));
+ }
+
+ @Override
public boolean canBuild(final Player base, final String group)
{
return permissionHandler.canUserBuild(base.getWorld().getName(), base.getName());
@@ -50,5 +58,4 @@ public class Permissions3Handler implements IPermissionsHandler
{
return permissionHandler.getUserSuffix(base.getWorld().getName(), base.getName());
}
-
}
diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsBukkitHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsBukkitHandler.java
index 9fd87905e..d47c3c8a4 100644
--- a/Essentials/src/com/earth2me/essentials/perm/PermissionsBukkitHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsBukkitHandler.java
@@ -3,6 +3,8 @@ package com.earth2me.essentials.perm;
import com.platymuus.bukkit.permissions.Group;
import com.platymuus.bukkit.permissions.PermissionInfo;
import com.platymuus.bukkit.permissions.PermissionsPlugin;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
@@ -20,32 +22,49 @@ public class PermissionsBukkitHandler extends SuperpermsHandler
@Override
public String getGroup(final Player base)
{
- final PermissionInfo info = plugin.getPlayerInfo(base.getName());
- if (info == null)
- {
- return "default";
- }
- final List<Group> groups = info.getGroups();
+ final List<Group> groups = getPBGroups(base);
if (groups == null || groups.isEmpty())
{
- return "default";
+ return null;
}
return groups.get(0).getName();
}
@Override
- public boolean inGroup(final Player base, final String group)
+ public List<String> getGroups(final Player base)
+ {
+ final List<Group> groups = getPBGroups(base);
+ if (groups.size() == 1)
+ {
+ return Collections.singletonList(groups.get(0).getName());
+ }
+ final List<String> groupNames = new ArrayList<String>(groups.size());
+ for (Group group : groups)
+ {
+ groupNames.add(group.getName());
+ }
+ return groupNames;
+ }
+
+ private List<Group> getPBGroups(final Player base)
{
final PermissionInfo info = plugin.getPlayerInfo(base.getName());
if (info == null)
{
- return false;
+ return Collections.emptyList();
}
final List<Group> groups = info.getGroups();
if (groups == null || groups.isEmpty())
{
- return false;
+ return Collections.emptyList();
}
+ return groups;
+ }
+
+ @Override
+ public boolean inGroup(final Player base, final String group)
+ {
+ final List<Group> groups = getPBGroups(base);
for (Group group1 : groups)
{
if (group1.getName().equalsIgnoreCase(group))
diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java
index 28b056c0a..5b7bb7b81 100644
--- a/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java
@@ -1,5 +1,7 @@
package com.earth2me.essentials.perm;
+import java.util.Arrays;
+import java.util.List;
import org.bukkit.entity.Player;
import ru.tehkode.permissions.PermissionManager;
import ru.tehkode.permissions.PermissionUser;
@@ -21,12 +23,23 @@ public class PermissionsExHandler implements IPermissionsHandler
final PermissionUser user = manager.getUser(base.getName());
if (user == null)
{
- return "default";
+ return null;
}
return user.getGroupsNames()[0];
}
@Override
+ public List<String> getGroups(final Player base)
+ {
+ final PermissionUser user = manager.getUser(base.getName());
+ if (user == null)
+ {
+ return null;
+ }
+ return Arrays.asList(user.getGroupsNames());
+ }
+
+ @Override
public boolean canBuild(final Player base, final String group)
{
final PermissionUser user = manager.getUser(base.getName());
@@ -62,7 +75,7 @@ public class PermissionsExHandler implements IPermissionsHandler
final PermissionUser user = manager.getUser(base.getName());
if (user == null)
{
- return "";
+ return null;
}
return user.getPrefix();
}
@@ -73,7 +86,7 @@ public class PermissionsExHandler implements IPermissionsHandler
final PermissionUser user = manager.getUser(base.getName());
if (user == null)
{
- return "";
+ return null;
}
return user.getSuffix();
}
diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java
new file mode 100644
index 000000000..2843b5d92
--- /dev/null
+++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java
@@ -0,0 +1,179 @@
+package com.earth2me.essentials.perm;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.Plugin;
+import org.bukkit.plugin.PluginManager;
+
+
+public class PermissionsHandler implements IPermissionsHandler
+{
+ private transient IPermissionsHandler handler = new NullPermissionsHandler();
+ private transient String defaultGroup = "default";
+ private final transient Plugin plugin;
+ private final static Logger LOGGER = Logger.getLogger("Minecraft");
+ private transient boolean useSuperperms = false;
+
+ public PermissionsHandler(final Plugin plugin)
+ {
+ this.plugin = plugin;
+ }
+
+ public PermissionsHandler(final Plugin plugin, final boolean useSuperperms)
+ {
+ this.plugin = plugin;
+ this.useSuperperms = useSuperperms;
+ }
+
+ public PermissionsHandler(final Plugin plugin, final String defaultGroup)
+ {
+ this.plugin = plugin;
+ this.defaultGroup = defaultGroup;
+ }
+
+ @Override
+ public String getGroup(final Player base)
+ {
+ String group = handler.getGroup(base);
+ if (group == null)
+ {
+ group = defaultGroup;
+ }
+ return group;
+ }
+
+ @Override
+ public List<String> getGroups(final Player base)
+ {
+ List<String> groups = handler.getGroups(base);
+ if (groups == null || groups.isEmpty())
+ {
+ groups = Collections.singletonList(defaultGroup);
+ }
+ return Collections.unmodifiableList(groups);
+ }
+
+ @Override
+ public boolean canBuild(final Player base, final String group)
+ {
+ return handler.canBuild(base, group);
+ }
+
+ @Override
+ public boolean inGroup(final Player base, final String group)
+ {
+ return handler.inGroup(base, group);
+ }
+
+ @Override
+ public boolean hasPermission(final Player base, final String node)
+ {
+ return handler.inGroup(base, node);
+ }
+
+ @Override
+ public String getPrefix(final Player base)
+ {
+ String prefix = handler.getPrefix(base);
+ if (prefix == null)
+ {
+ prefix = "";
+ }
+ return prefix;
+ }
+
+ @Override
+ public String getSuffix(final Player base)
+ {
+ String suffix = handler.getSuffix(base);
+ if (suffix == null)
+ {
+ suffix = "";
+ }
+ return suffix;
+ }
+
+ public void checkPermissions()
+ {
+ final PluginManager pluginManager = plugin.getServer().getPluginManager();
+ final Plugin permExPlugin = pluginManager.getPlugin("PermissionsEx");
+
+ if (permExPlugin == null || !permExPlugin.isEnabled())
+ {
+ final Plugin permBukkitPlugin = pluginManager.getPlugin("PermissionsBukkit");
+ final Plugin bPermPlugin = pluginManager.getPlugin("bPermissions");
+ final Plugin permPlugin = pluginManager.getPlugin("Permissions");
+
+ if (permBukkitPlugin != null && permBukkitPlugin.isEnabled())
+ {
+ if (!(handler instanceof PermissionsBukkitHandler))
+ {
+ LOGGER.log(Level.INFO, "Essentials: Using PermissionsBukkit based permissions.");
+ handler = new PermissionsBukkitHandler(permBukkitPlugin);
+ }
+ }
+ else if (bPermPlugin != null && bPermPlugin.isEnabled())
+ {
+ if (!(handler instanceof BPermissionsHandler))
+ {
+ LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions.");
+ handler = new BPermissionsHandler();
+ }
+ }
+ else if (permPlugin == null || !permPlugin.isEnabled())
+ {
+ if (useSuperperms)
+ {
+ if (!(handler instanceof SuperpermsHandler))
+ {
+ LOGGER.log(Level.INFO, "Essentials: Using superperms based permissions.");
+ handler = new SuperpermsHandler();
+ }
+ }
+ else
+ {
+ if (!(handler instanceof ConfigPermissionsHandler))
+ {
+ LOGGER.log(Level.INFO, "Essentials: Using config based permissions. Enable superperms in config.");
+ handler = new ConfigPermissionsHandler(plugin);
+ }
+ }
+ }
+ else
+ {
+ if (permPlugin.getDescription().getVersion().charAt(0) == '3')
+ {
+ if (!(handler instanceof Permissions3Handler))
+ {
+ LOGGER.log(Level.INFO, "Essentials: Using Permissions 3 based permissions.");
+ handler = new Permissions3Handler(permPlugin);
+ }
+ }
+ else
+ {
+ if (!(handler instanceof Permissions2Handler))
+ {
+ LOGGER.log(Level.INFO, "Essentials: Using Permissions 2 based permissions.");
+ handler = new Permissions2Handler(permPlugin);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (!(handler instanceof PermissionsExHandler))
+ {
+ LOGGER.log(Level.INFO, "Essentials: Using PermissionsEx based permissions.");
+ handler = new PermissionsExHandler();
+ }
+ }
+ }
+
+ public void setUseSuperperms(final boolean useSuperperms)
+ {
+ this.useSuperperms = useSuperperms;
+ }
+}
diff --git a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java
index 60b1c5a3d..70a118bcf 100644
--- a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java
+++ b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java
@@ -1,5 +1,6 @@
package com.earth2me.essentials.perm;
+import java.util.List;
import org.bukkit.entity.Player;
@@ -8,7 +9,13 @@ public class SuperpermsHandler implements IPermissionsHandler
@Override
public String getGroup(final Player base)
{
- return "default";
+ return null;
+ }
+
+ @Override
+ public List<String> getGroups(final Player base)
+ {
+ return null;
}
@Override
@@ -31,14 +38,16 @@ public class SuperpermsHandler implements IPermissionsHandler
return false;
}
final String[] parts = node.split("\\.");
- final StringBuilder sb = new StringBuilder();
+ final StringBuilder builder = new StringBuilder(node.length());
for (String part : parts)
{
- if (base.hasPermission(sb.toString() + "*"))
+ builder.append('*');
+ if (base.hasPermission(builder.toString()))
{
return true;
}
- sb.append(part).append(".");
+ builder.deleteCharAt(builder.length() - 1);
+ builder.append(part).append('.');
}
return base.hasPermission(node);
}
@@ -46,12 +55,12 @@ public class SuperpermsHandler implements IPermissionsHandler
@Override
public String getPrefix(final Player base)
{
- return "";
+ return null;
}
@Override
public String getSuffix(final Player base)
{
- return "";
+ return null;
}
}