summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/net/ess3/Essentials.java9
-rw-r--r--Essentials/src/net/ess3/api/IPermission.java4
-rw-r--r--Essentials/src/net/ess3/bukkit/PermissionFactory.java47
-rw-r--r--Essentials/src/net/ess3/permissions/AbstractSuperpermsPermission.java20
-rw-r--r--Essentials/src/net/ess3/permissions/Permissions.java20
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/Permissions.java24
-rw-r--r--EssentialsProtect/src/net/ess3/protect/Permissions.java12
7 files changed, 65 insertions, 71 deletions
diff --git a/Essentials/src/net/ess3/Essentials.java b/Essentials/src/net/ess3/Essentials.java
index 00499a574..9d0f215a3 100644
--- a/Essentials/src/net/ess3/Essentials.java
+++ b/Essentials/src/net/ess3/Essentials.java
@@ -106,11 +106,9 @@ public class Essentials implements IEssentials
logger.log(Level.INFO, I18n._("usingTempFolderForTesting"));
logger.log(Level.INFO, dataFolder.toString());
- //this.initialize(null, server, new PluginDescriptionFile(new FileReader(new File("src" + File.separator + "plugin.yml"))), dataFolder, null, null);
settings = new SettingsHolder(this);
i18n.updateLocale("en");
userMap = new UserMap(this);
- //permissionsHandler = new PermissionsHandler(this);
economy = new Economy(this);
}
@@ -124,15 +122,10 @@ public class Essentials implements IEssentials
execTimer.mark("BukkitCheck");
- //final EssentialsUpgrade upgrade = new EssentialsUpgrade(this);
- //upgrade.beforeSettings();
- //execTimer.mark("Upgrade");
reloadList = new ArrayList<IReload>();
settings = new SettingsHolder(this);
reloadList.add(settings);
execTimer.mark("Settings");
- //upgrade.afterSettings();
- //execTimer.mark("Upgrade2");
i18n.updateLocale(settings.getLocale());
userMap = new UserMap(this);
reloadList.add(userMap);
@@ -158,7 +151,6 @@ public class Essentials implements IEssentials
onReload();
backup = new Backup(this);
- //permissionsHandler = new PermissionsHandler(this);
jails = new Jails(this);
reloadList.add(jails);
@@ -338,6 +330,7 @@ public class Essentials implements IEssentials
return economy;
}
+ @Override
public SpawnsHolder getSpawns()
{
return spawns;
diff --git a/Essentials/src/net/ess3/api/IPermission.java b/Essentials/src/net/ess3/api/IPermission.java
index 66cf09ad0..a559fac86 100644
--- a/Essentials/src/net/ess3/api/IPermission.java
+++ b/Essentials/src/net/ess3/api/IPermission.java
@@ -1,18 +1,16 @@
package net.ess3.api;
import org.bukkit.command.CommandSender;
-import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
-
public interface IPermission
{
String getPermissionName();
boolean isAuthorized(CommandSender sender);
- Permission getPermission();
+ String getParentPermission();
PermissionDefault getPermissionDefault();
}
diff --git a/Essentials/src/net/ess3/bukkit/PermissionFactory.java b/Essentials/src/net/ess3/bukkit/PermissionFactory.java
index 3d8c2da9b..f3e84b54b 100644
--- a/Essentials/src/net/ess3/bukkit/PermissionFactory.java
+++ b/Essentials/src/net/ess3/bukkit/PermissionFactory.java
@@ -1,7 +1,9 @@
package net.ess3.bukkit;
-import java.util.regex.Pattern;
+import java.util.StringTokenizer;
+import net.ess3.api.IPermission;
import org.bukkit.Bukkit;
+import org.bukkit.command.CommandSender;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.PluginManager;
@@ -9,17 +11,20 @@ import org.bukkit.plugin.PluginManager;
public class PermissionFactory
{
- private static transient final Pattern DOT_PATTERN = Pattern.compile("\\.");
-
- public static Permission registerPermission(String permission, PermissionDefault defaultPerm)
+ public static String registerParentPermission(String permission)
{
final PluginManager pluginManager = Bukkit.getServer().getPluginManager();
- final String[] parts = DOT_PATTERN.split(permission);
+ final StringTokenizer tokenizer = new StringTokenizer(permission, ".");
final StringBuilder builder = new StringBuilder(permission.length());
Permission parent = null;
- for (int i = 0; i < parts.length - 1; i++)
+ while (tokenizer.hasMoreTokens())
{
- builder.append(parts[i]).append(".*");
+ String part = tokenizer.nextToken();
+ if (!tokenizer.hasMoreTokens())
+ {
+ break;
+ }
+ builder.append(part).append(".*");
String permString = builder.toString();
Permission perm = pluginManager.getPermission(permString);
if (perm == null)
@@ -31,21 +36,31 @@ public class PermissionFactory
parent.getChildren().put(perm.getName(), Boolean.TRUE);
}
parent = perm;
+ perm.recalculatePermissibles();
}
builder.deleteCharAt(builder.length() - 1);
}
- Permission perm = pluginManager.getPermission(permission);
- if (perm == null)
+ return parent == null ? null : parent.getName();
+ }
+
+ public static boolean checkPermission(CommandSender sender, IPermission perm)
+ {
+ final String permission = perm.getPermissionName();
+ if (sender.isPermissionSet(permission))
+ {
+ return sender.hasPermission(permission);
+ }
+ else
{
- perm = new Permission(permission, defaultPerm);
- pluginManager.addPermission(perm);
- if (parent != null)
+ final String parentPermission = perm.getParentPermission();
+ if (parentPermission != null && sender.isPermissionSet(parentPermission))
+ {
+ return sender.hasPermission(parentPermission);
+ }
+ else
{
- parent.getChildren().put(perm.getName(), Boolean.TRUE);
+ return perm.getPermissionDefault().getValue(sender.isOp());
}
- parent = perm;
}
- perm.recalculatePermissibles();
- return perm;
}
}
diff --git a/Essentials/src/net/ess3/permissions/AbstractSuperpermsPermission.java b/Essentials/src/net/ess3/permissions/AbstractSuperpermsPermission.java
index 46020336b..c846a88d2 100644
--- a/Essentials/src/net/ess3/permissions/AbstractSuperpermsPermission.java
+++ b/Essentials/src/net/ess3/permissions/AbstractSuperpermsPermission.java
@@ -3,44 +3,40 @@ package net.ess3.permissions;
import net.ess3.api.IPermission;
import net.ess3.bukkit.PermissionFactory;
import org.bukkit.command.CommandSender;
-import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
public abstract class AbstractSuperpermsPermission implements IPermission
{
- //todo - sort all this out
- protected Permission bukkitPerm;
+ private String parent = null;
-
@Override
- public Permission getPermission()
+ public String getParentPermission()
{
- if (bukkitPerm != null)
+ if (parent != null)
{
- return bukkitPerm;
+ return parent;
}
else
{
- return PermissionFactory.registerPermission(getPermissionName(), getPermissionDefault());
+ return PermissionFactory.registerParentPermission(getPermissionName());
}
}
/**
* PermissionDefault is OP, if the method is not overwritten.
- * @return
+ *
+ * @return
*/
-
@Override
public PermissionDefault getPermissionDefault()
{
return PermissionDefault.OP;
}
-
@Override
public boolean isAuthorized(final CommandSender sender)
{
- return sender.hasPermission(getPermission());
+ return PermissionFactory.checkPermission(sender, this);
}
}
diff --git a/Essentials/src/net/ess3/permissions/Permissions.java b/Essentials/src/net/ess3/permissions/Permissions.java
index a71ae6fa0..dfc2ae7ab 100644
--- a/Essentials/src/net/ess3/permissions/Permissions.java
+++ b/Essentials/src/net/ess3/permissions/Permissions.java
@@ -4,7 +4,6 @@ import java.util.Locale;
import net.ess3.api.IPermission;
import net.ess3.bukkit.PermissionFactory;
import org.bukkit.command.CommandSender;
-import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
@@ -96,7 +95,7 @@ public enum Permissions implements IPermission
private static final String base = "essentials.";
private final String permission;
private final PermissionDefault defaultPerm;
- private transient Permission bukkitPerm = null;
+ private transient String parent = null;
private Permissions()
{
@@ -104,7 +103,7 @@ public enum Permissions implements IPermission
}
private Permissions(final PermissionDefault defaultPerm)
- {
+ {
permission = base + toString().toLowerCase(Locale.ENGLISH).replace('_', '.');
this.defaultPerm = defaultPerm;
}
@@ -115,33 +114,28 @@ public enum Permissions implements IPermission
return permission;
}
-
-
@Override
- public Permission getPermission()
+ public String getParentPermission()
{
- if (bukkitPerm != null)
+ if (parent != null)
{
- return bukkitPerm;
+ return parent;
}
else
{
- return PermissionFactory.registerPermission(getPermissionName(), getPermissionDefault());
+ return PermissionFactory.registerParentPermission(getPermissionName());
}
}
-
@Override
public PermissionDefault getPermissionDefault()
{
return this.defaultPerm;
}
-
@Override
public boolean isAuthorized(CommandSender sender)
{
- return sender.hasPermission(getPermission());
+ return PermissionFactory.checkPermission(sender, this);
}
}
-
diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/Permissions.java b/EssentialsAntiBuild/src/net/ess3/antibuild/Permissions.java
index 7088fb0e0..250caa4a3 100644
--- a/EssentialsAntiBuild/src/net/ess3/antibuild/Permissions.java
+++ b/EssentialsAntiBuild/src/net/ess3/antibuild/Permissions.java
@@ -7,13 +7,11 @@ import net.ess3.bukkit.PermissionFactory;
import net.ess3.permissions.BasePermission;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
-import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
public enum Permissions implements IPermission
{
-
BLACKLIST_ALLOWPLACEMENT,
BLACKLIST_ALLOWUSAGE,
BLACKLIST_ALLOWBREAK,
@@ -22,7 +20,7 @@ public enum Permissions implements IPermission
private static final String base = "essentials.build.";
private final String permission;
private final PermissionDefault defaultPerm;
- private transient Permission bukkitPerm = null;
+ private transient String parent = null;
private Permissions()
{
@@ -42,15 +40,15 @@ public enum Permissions implements IPermission
}
@Override
- public Permission getPermission()
+ public String getParentPermission()
{
- if (bukkitPerm != null)
+ if (parent != null)
{
- return bukkitPerm;
+ return parent;
}
else
{
- return PermissionFactory.registerPermission(getPermissionName(), getPermissionDefault());
+ return PermissionFactory.registerParentPermission(getPermissionName());
}
}
@@ -63,9 +61,8 @@ public enum Permissions implements IPermission
@Override
public boolean isAuthorized(final CommandSender sender)
{
- return sender.hasPermission(getPermission());
+ return PermissionFactory.checkPermission(sender, this);
}
-
private static EnumMap<Material, IPermission> permissions = new EnumMap<Material, IPermission>(Material.class);
public static IPermission getPlacePermission(final Material mat)
@@ -85,7 +82,7 @@ public enum Permissions implements IPermission
}
return perm;
}
-
+
public static IPermission getBreakPermission(final Material mat)
{
IPermission perm = permissions.get(mat);
@@ -103,7 +100,7 @@ public enum Permissions implements IPermission
}
return perm;
}
-
+
public static IPermission getInteractPermission(final Material mat)
{
IPermission perm = permissions.get(mat);
@@ -121,6 +118,7 @@ public enum Permissions implements IPermission
}
return perm;
}
+
public static IPermission getCraftPermission(final Material mat)
{
IPermission perm = permissions.get(mat);
@@ -138,7 +136,7 @@ public enum Permissions implements IPermission
}
return perm;
}
-
+
public static IPermission getPickupPermission(final Material mat)
{
IPermission perm = permissions.get(mat);
@@ -156,7 +154,7 @@ public enum Permissions implements IPermission
}
return perm;
}
-
+
public static IPermission getDropPermission(final Material mat)
{
IPermission perm = permissions.get(mat);
diff --git a/EssentialsProtect/src/net/ess3/protect/Permissions.java b/EssentialsProtect/src/net/ess3/protect/Permissions.java
index f9a6aad7b..2a7db4130 100644
--- a/EssentialsProtect/src/net/ess3/protect/Permissions.java
+++ b/EssentialsProtect/src/net/ess3/protect/Permissions.java
@@ -30,7 +30,7 @@ public enum Permissions implements IPermission
private static final String base = "essentials.protect.";
private final String permission;
private final PermissionDefault defaultPerm;
- private transient Permission bukkitPerm = null;
+ private transient String parent = null;
private Permissions()
{
@@ -50,15 +50,15 @@ public enum Permissions implements IPermission
}
@Override
- public Permission getPermission()
+ public String getParentPermission()
{
- if (bukkitPerm != null)
+ if (parent != null)
{
- return bukkitPerm;
+ return parent;
}
else
{
- return PermissionFactory.registerPermission(getPermissionName(), getPermissionDefault());
+ return PermissionFactory.registerParentPermission(getPermissionName());
}
}
@@ -71,6 +71,6 @@ public enum Permissions implements IPermission
@Override
public boolean isAuthorized(final CommandSender sender)
{
- return sender.hasPermission(getPermission());
+ return PermissionFactory.checkPermission(sender, this);
}
}