#285 #319 Add support for wildcard permissions

- Add wildcard attribute to permission nodes that are checked additionally in the permissions manager
This commit is contained in:
ljacqu 2015-12-05 23:33:09 +01:00
parent f99bba4b5f
commit 63a7cd00df
4 changed files with 38 additions and 26 deletions

View File

@ -103,23 +103,13 @@ public enum AdminPermission implements PermissionNode {
/** /**
* Give access to all admin commands. * Give access to all admin commands.
*/ */
ALL("authme.admin.*"); ADMIN_ALL("authme.admin.*");
/** /**
* Permission node. * The permission node.
*/ */
private String node; private String node;
/**
* Get the permission node.
*
* @return Permission node.
*/
@Override
public String getNode() {
return node;
}
/** /**
* Constructor. * Constructor.
* *
@ -128,4 +118,14 @@ public enum AdminPermission implements PermissionNode {
AdminPermission(String node) { AdminPermission(String node) {
this.node = node; this.node = node;
} }
@Override
public String getNode() {
return node;
}
@Override
public PermissionNode getWildcardNode() {
return ADMIN_ALL;
}
} }

View File

@ -5,7 +5,18 @@ package fr.xephi.authme.permission;
*/ */
public interface PermissionNode { public interface PermissionNode {
/** Return the node of the permission, e.g. "authme.unregister". */ /**
* Return the node of the permission, e.g. "authme.player.unregister".
*
* @return The name of the permission node
*/
String getNode(); String getNode();
/**
* Return the wildcard node that also grants the permission.
*
* @return The wildcard permission node (e.g. "authme.player.*")
*/
PermissionNode getWildcardNode();
} }

View File

@ -314,7 +314,8 @@ public class PermissionsManager implements PermissionsService {
} }
public boolean hasPermission(Player player, PermissionNode permissionNode, boolean def) { public boolean hasPermission(Player player, PermissionNode permissionNode, boolean def) {
return hasPermission(player, permissionNode.getNode(), def); return hasPermission(player, permissionNode.getNode(), def)
|| hasPermission(player, permissionNode.getWildcardNode(), def);
} }
public boolean hasPermission(Player player, Iterable<PermissionNode> nodes, boolean def) { public boolean hasPermission(Player player, Iterable<PermissionNode> nodes, boolean def) {

View File

@ -83,23 +83,13 @@ public enum PlayerPermission implements PermissionNode {
/** /**
* Permission to use all player (non-admin) commands. * Permission to use all player (non-admin) commands.
*/ */
ALL_COMMANDS("authme.player.*"); PLAYER_ALL("authme.player.*");
/** /**
* Permission node. * The permission node.
*/ */
private String node; private String node;
/**
* Get the permission node.
*
* @return Permission node.
*/
@Override
public String getNode() {
return node;
}
/** /**
* Constructor. * Constructor.
* *
@ -108,4 +98,14 @@ public enum PlayerPermission implements PermissionNode {
PlayerPermission(String node) { PlayerPermission(String node) {
this.node = node; this.node = node;
} }
@Override
public String getNode() {
return node;
}
@Override
public PermissionNode getWildcardNode() {
return PLAYER_ALL;
}
} }