Handle negated wildcard perms in generic superperms

This commit is contained in:
KHobbits 2012-09-25 22:21:15 +01:00
parent 240aebde98
commit 2bc9f2e386

View file

@ -31,29 +31,26 @@ public class SuperpermsHandler implements IPermissionsHandler
} }
@Override @Override
public boolean hasPermission(final Player base, final String node) public boolean hasPermission(final Player base, String node)
{ {
if (base.hasPermission("*")) String permCheck = node;
int index;
while (true)
{ {
return true; if (base.isPermissionSet(permCheck))
{
return base.hasPermission(permCheck);
} }
if (base.hasPermission("-" + node))
index = node.lastIndexOf('.');
if (index < 1)
{ {
return false; return base.hasPermission("*");
} }
final String[] parts = node.split("\\.");
final StringBuilder builder = new StringBuilder(node.length()); node = node.substring(0, index);
for (String part : parts) permCheck = node + ".*";
{
builder.append('*');
if (base.hasPermission(builder.toString()))
{
return true;
} }
builder.deleteCharAt(builder.length() - 1);
builder.append(part).append('.');
}
return base.hasPermission(node);
} }
@Override @Override