mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-12 09:35:26 +02:00
New permission checks, now only registers the parent nodes and needs two checks. This combines the 2.9 and 3.0 permission check methods.
This commit is contained in:
@@ -106,11 +106,9 @@ public class Essentials implements IEssentials
|
|||||||
|
|
||||||
logger.log(Level.INFO, I18n._("usingTempFolderForTesting"));
|
logger.log(Level.INFO, I18n._("usingTempFolderForTesting"));
|
||||||
logger.log(Level.INFO, dataFolder.toString());
|
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);
|
settings = new SettingsHolder(this);
|
||||||
i18n.updateLocale("en");
|
i18n.updateLocale("en");
|
||||||
userMap = new UserMap(this);
|
userMap = new UserMap(this);
|
||||||
//permissionsHandler = new PermissionsHandler(this);
|
|
||||||
economy = new Economy(this);
|
economy = new Economy(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,15 +122,10 @@ public class Essentials implements IEssentials
|
|||||||
|
|
||||||
execTimer.mark("BukkitCheck");
|
execTimer.mark("BukkitCheck");
|
||||||
|
|
||||||
//final EssentialsUpgrade upgrade = new EssentialsUpgrade(this);
|
|
||||||
//upgrade.beforeSettings();
|
|
||||||
//execTimer.mark("Upgrade");
|
|
||||||
reloadList = new ArrayList<IReload>();
|
reloadList = new ArrayList<IReload>();
|
||||||
settings = new SettingsHolder(this);
|
settings = new SettingsHolder(this);
|
||||||
reloadList.add(settings);
|
reloadList.add(settings);
|
||||||
execTimer.mark("Settings");
|
execTimer.mark("Settings");
|
||||||
//upgrade.afterSettings();
|
|
||||||
//execTimer.mark("Upgrade2");
|
|
||||||
i18n.updateLocale(settings.getLocale());
|
i18n.updateLocale(settings.getLocale());
|
||||||
userMap = new UserMap(this);
|
userMap = new UserMap(this);
|
||||||
reloadList.add(userMap);
|
reloadList.add(userMap);
|
||||||
@@ -158,7 +151,6 @@ public class Essentials implements IEssentials
|
|||||||
onReload();
|
onReload();
|
||||||
|
|
||||||
backup = new Backup(this);
|
backup = new Backup(this);
|
||||||
//permissionsHandler = new PermissionsHandler(this);
|
|
||||||
|
|
||||||
jails = new Jails(this);
|
jails = new Jails(this);
|
||||||
reloadList.add(jails);
|
reloadList.add(jails);
|
||||||
@@ -338,6 +330,7 @@ public class Essentials implements IEssentials
|
|||||||
return economy;
|
return economy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public SpawnsHolder getSpawns()
|
public SpawnsHolder getSpawns()
|
||||||
{
|
{
|
||||||
return spawns;
|
return spawns;
|
||||||
|
@@ -1,18 +1,16 @@
|
|||||||
package net.ess3.api;
|
package net.ess3.api;
|
||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.permissions.Permission;
|
|
||||||
import org.bukkit.permissions.PermissionDefault;
|
import org.bukkit.permissions.PermissionDefault;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public interface IPermission
|
public interface IPermission
|
||||||
{
|
{
|
||||||
String getPermissionName();
|
String getPermissionName();
|
||||||
|
|
||||||
boolean isAuthorized(CommandSender sender);
|
boolean isAuthorized(CommandSender sender);
|
||||||
|
|
||||||
Permission getPermission();
|
String getParentPermission();
|
||||||
|
|
||||||
PermissionDefault getPermissionDefault();
|
PermissionDefault getPermissionDefault();
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
package net.ess3.bukkit;
|
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.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.permissions.Permission;
|
import org.bukkit.permissions.Permission;
|
||||||
import org.bukkit.permissions.PermissionDefault;
|
import org.bukkit.permissions.PermissionDefault;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
@@ -9,17 +11,20 @@ import org.bukkit.plugin.PluginManager;
|
|||||||
|
|
||||||
public class PermissionFactory
|
public class PermissionFactory
|
||||||
{
|
{
|
||||||
private static transient final Pattern DOT_PATTERN = Pattern.compile("\\.");
|
public static String registerParentPermission(String permission)
|
||||||
|
|
||||||
public static Permission registerPermission(String permission, PermissionDefault defaultPerm)
|
|
||||||
{
|
{
|
||||||
final PluginManager pluginManager = Bukkit.getServer().getPluginManager();
|
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());
|
final StringBuilder builder = new StringBuilder(permission.length());
|
||||||
Permission parent = null;
|
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();
|
String permString = builder.toString();
|
||||||
Permission perm = pluginManager.getPermission(permString);
|
Permission perm = pluginManager.getPermission(permString);
|
||||||
if (perm == null)
|
if (perm == null)
|
||||||
@@ -31,21 +36,31 @@ public class PermissionFactory
|
|||||||
parent.getChildren().put(perm.getName(), Boolean.TRUE);
|
parent.getChildren().put(perm.getName(), Boolean.TRUE);
|
||||||
}
|
}
|
||||||
parent = perm;
|
parent = perm;
|
||||||
|
perm.recalculatePermissibles();
|
||||||
}
|
}
|
||||||
builder.deleteCharAt(builder.length() - 1);
|
builder.deleteCharAt(builder.length() - 1);
|
||||||
}
|
}
|
||||||
Permission perm = pluginManager.getPermission(permission);
|
return parent == null ? null : parent.getName();
|
||||||
if (perm == null)
|
}
|
||||||
{
|
|
||||||
perm = new Permission(permission, defaultPerm);
|
public static boolean checkPermission(CommandSender sender, IPermission perm)
|
||||||
pluginManager.addPermission(perm);
|
{
|
||||||
if (parent != null)
|
final String permission = perm.getPermissionName();
|
||||||
{
|
if (sender.isPermissionSet(permission))
|
||||||
parent.getChildren().put(perm.getName(), Boolean.TRUE);
|
{
|
||||||
|
return sender.hasPermission(permission);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
final String parentPermission = perm.getParentPermission();
|
||||||
|
if (parentPermission != null && sender.isPermissionSet(parentPermission))
|
||||||
|
{
|
||||||
|
return sender.hasPermission(parentPermission);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return perm.getPermissionDefault().getValue(sender.isOp());
|
||||||
}
|
}
|
||||||
parent = perm;
|
|
||||||
}
|
}
|
||||||
perm.recalculatePermissibles();
|
|
||||||
return perm;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,44 +3,40 @@ package net.ess3.permissions;
|
|||||||
import net.ess3.api.IPermission;
|
import net.ess3.api.IPermission;
|
||||||
import net.ess3.bukkit.PermissionFactory;
|
import net.ess3.bukkit.PermissionFactory;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.permissions.Permission;
|
|
||||||
import org.bukkit.permissions.PermissionDefault;
|
import org.bukkit.permissions.PermissionDefault;
|
||||||
|
|
||||||
|
|
||||||
public abstract class AbstractSuperpermsPermission implements IPermission
|
public abstract class AbstractSuperpermsPermission implements IPermission
|
||||||
{
|
{
|
||||||
//todo - sort all this out
|
private String parent = null;
|
||||||
protected Permission bukkitPerm;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Permission getPermission()
|
public String getParentPermission()
|
||||||
{
|
{
|
||||||
if (bukkitPerm != null)
|
if (parent != null)
|
||||||
{
|
{
|
||||||
return bukkitPerm;
|
return parent;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return PermissionFactory.registerPermission(getPermissionName(), getPermissionDefault());
|
return PermissionFactory.registerParentPermission(getPermissionName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PermissionDefault is OP, if the method is not overwritten.
|
* PermissionDefault is OP, if the method is not overwritten.
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PermissionDefault getPermissionDefault()
|
public PermissionDefault getPermissionDefault()
|
||||||
{
|
{
|
||||||
return PermissionDefault.OP;
|
return PermissionDefault.OP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAuthorized(final CommandSender sender)
|
public boolean isAuthorized(final CommandSender sender)
|
||||||
{
|
{
|
||||||
return sender.hasPermission(getPermission());
|
return PermissionFactory.checkPermission(sender, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,7 +4,6 @@ import java.util.Locale;
|
|||||||
import net.ess3.api.IPermission;
|
import net.ess3.api.IPermission;
|
||||||
import net.ess3.bukkit.PermissionFactory;
|
import net.ess3.bukkit.PermissionFactory;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.permissions.Permission;
|
|
||||||
import org.bukkit.permissions.PermissionDefault;
|
import org.bukkit.permissions.PermissionDefault;
|
||||||
|
|
||||||
|
|
||||||
@@ -96,7 +95,7 @@ public enum Permissions implements IPermission
|
|||||||
private static final String base = "essentials.";
|
private static final String base = "essentials.";
|
||||||
private final String permission;
|
private final String permission;
|
||||||
private final PermissionDefault defaultPerm;
|
private final PermissionDefault defaultPerm;
|
||||||
private transient Permission bukkitPerm = null;
|
private transient String parent = null;
|
||||||
|
|
||||||
private Permissions()
|
private Permissions()
|
||||||
{
|
{
|
||||||
@@ -115,33 +114,28 @@ public enum Permissions implements IPermission
|
|||||||
return permission;
|
return permission;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Permission getPermission()
|
public String getParentPermission()
|
||||||
{
|
{
|
||||||
if (bukkitPerm != null)
|
if (parent != null)
|
||||||
{
|
{
|
||||||
return bukkitPerm;
|
return parent;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return PermissionFactory.registerPermission(getPermissionName(), getPermissionDefault());
|
return PermissionFactory.registerParentPermission(getPermissionName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PermissionDefault getPermissionDefault()
|
public PermissionDefault getPermissionDefault()
|
||||||
{
|
{
|
||||||
return this.defaultPerm;
|
return this.defaultPerm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAuthorized(CommandSender sender)
|
public boolean isAuthorized(CommandSender sender)
|
||||||
{
|
{
|
||||||
return sender.hasPermission(getPermission());
|
return PermissionFactory.checkPermission(sender, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,13 +7,11 @@ import net.ess3.bukkit.PermissionFactory;
|
|||||||
import net.ess3.permissions.BasePermission;
|
import net.ess3.permissions.BasePermission;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.permissions.Permission;
|
|
||||||
import org.bukkit.permissions.PermissionDefault;
|
import org.bukkit.permissions.PermissionDefault;
|
||||||
|
|
||||||
|
|
||||||
public enum Permissions implements IPermission
|
public enum Permissions implements IPermission
|
||||||
{
|
{
|
||||||
|
|
||||||
BLACKLIST_ALLOWPLACEMENT,
|
BLACKLIST_ALLOWPLACEMENT,
|
||||||
BLACKLIST_ALLOWUSAGE,
|
BLACKLIST_ALLOWUSAGE,
|
||||||
BLACKLIST_ALLOWBREAK,
|
BLACKLIST_ALLOWBREAK,
|
||||||
@@ -22,7 +20,7 @@ public enum Permissions implements IPermission
|
|||||||
private static final String base = "essentials.build.";
|
private static final String base = "essentials.build.";
|
||||||
private final String permission;
|
private final String permission;
|
||||||
private final PermissionDefault defaultPerm;
|
private final PermissionDefault defaultPerm;
|
||||||
private transient Permission bukkitPerm = null;
|
private transient String parent = null;
|
||||||
|
|
||||||
private Permissions()
|
private Permissions()
|
||||||
{
|
{
|
||||||
@@ -42,15 +40,15 @@ public enum Permissions implements IPermission
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Permission getPermission()
|
public String getParentPermission()
|
||||||
{
|
{
|
||||||
if (bukkitPerm != null)
|
if (parent != null)
|
||||||
{
|
{
|
||||||
return bukkitPerm;
|
return parent;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return PermissionFactory.registerPermission(getPermissionName(), getPermissionDefault());
|
return PermissionFactory.registerParentPermission(getPermissionName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,9 +61,8 @@ public enum Permissions implements IPermission
|
|||||||
@Override
|
@Override
|
||||||
public boolean isAuthorized(final CommandSender sender)
|
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);
|
private static EnumMap<Material, IPermission> permissions = new EnumMap<Material, IPermission>(Material.class);
|
||||||
|
|
||||||
public static IPermission getPlacePermission(final Material mat)
|
public static IPermission getPlacePermission(final Material mat)
|
||||||
@@ -121,6 +118,7 @@ public enum Permissions implements IPermission
|
|||||||
}
|
}
|
||||||
return perm;
|
return perm;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IPermission getCraftPermission(final Material mat)
|
public static IPermission getCraftPermission(final Material mat)
|
||||||
{
|
{
|
||||||
IPermission perm = permissions.get(mat);
|
IPermission perm = permissions.get(mat);
|
||||||
|
@@ -30,7 +30,7 @@ public enum Permissions implements IPermission
|
|||||||
private static final String base = "essentials.protect.";
|
private static final String base = "essentials.protect.";
|
||||||
private final String permission;
|
private final String permission;
|
||||||
private final PermissionDefault defaultPerm;
|
private final PermissionDefault defaultPerm;
|
||||||
private transient Permission bukkitPerm = null;
|
private transient String parent = null;
|
||||||
|
|
||||||
private Permissions()
|
private Permissions()
|
||||||
{
|
{
|
||||||
@@ -50,15 +50,15 @@ public enum Permissions implements IPermission
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Permission getPermission()
|
public String getParentPermission()
|
||||||
{
|
{
|
||||||
if (bukkitPerm != null)
|
if (parent != null)
|
||||||
{
|
{
|
||||||
return bukkitPerm;
|
return parent;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return PermissionFactory.registerPermission(getPermissionName(), getPermissionDefault());
|
return PermissionFactory.registerParentPermission(getPermissionName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,6 +71,6 @@ public enum Permissions implements IPermission
|
|||||||
@Override
|
@Override
|
||||||
public boolean isAuthorized(final CommandSender sender)
|
public boolean isAuthorized(final CommandSender sender)
|
||||||
{
|
{
|
||||||
return sender.hasPermission(getPermission());
|
return PermissionFactory.checkPermission(sender, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user