mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2024-09-16 17:04:40 +02:00
#314 Evaluate default permission on enum, remove default from handler interface
- Evaluate permission for DefaultPermission on the enum itself - Remove boolean default from PermissionHandler for hasPermission() - Remove some unused / intermediary hasPermission() flavors in PermissionsManager
This commit is contained in:
parent
fdb9227ec1
commit
95343e366b
@ -48,7 +48,7 @@ public class HelpProvider implements SettingsDependent {
|
|||||||
private String helpHeader;
|
private String helpHeader;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public HelpProvider(PermissionsManager permissionsManager, NewSetting settings) {
|
HelpProvider(PermissionsManager permissionsManager, NewSetting settings) {
|
||||||
this.permissionsManager = permissionsManager;
|
this.permissionsManager = permissionsManager;
|
||||||
loadSettings(settings);
|
loadSettings(settings);
|
||||||
}
|
}
|
||||||
@ -152,7 +152,7 @@ public class HelpProvider implements SettingsDependent {
|
|||||||
final DefaultPermission defaultPermission = permission.getDefaultPermission();
|
final DefaultPermission defaultPermission = permission.getDefaultPermission();
|
||||||
String addendum = "";
|
String addendum = "";
|
||||||
if (DefaultPermission.OP_ONLY.equals(defaultPermission)) {
|
if (DefaultPermission.OP_ONLY.equals(defaultPermission)) {
|
||||||
addendum = PermissionsManager.evaluateDefaultPermission(defaultPermission, sender)
|
addendum = defaultPermission.evaluate(sender)
|
||||||
? " (You have permission)"
|
? " (You have permission)"
|
||||||
: " (No permission)";
|
: " (No permission)";
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,35 @@
|
|||||||
package fr.xephi.authme.permission;
|
package fr.xephi.authme.permission;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default permission for a command if there is no support for permission nodes.
|
* The default permission to fall back to if there is no support for permission nodes.
|
||||||
*/
|
*/
|
||||||
public enum DefaultPermission {
|
public enum DefaultPermission {
|
||||||
|
|
||||||
/** No one can execute the command. */
|
/** No one has permission. */
|
||||||
NOT_ALLOWED("No permission"),
|
NOT_ALLOWED("No permission") {
|
||||||
|
@Override
|
||||||
|
public boolean evaluate(CommandSender sender) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/** Only players with the OP status may execute the command. */
|
/** Only players with OP status have permission. */
|
||||||
OP_ONLY("OP's only"),
|
OP_ONLY("OP's only") {
|
||||||
|
@Override
|
||||||
|
public boolean evaluate(CommandSender sender) {
|
||||||
|
return sender.isOp();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/** The command can be executed by anyone. */
|
/** Everyone is granted permission. */
|
||||||
ALLOWED("Everyone allowed");
|
ALLOWED("Everyone allowed") {
|
||||||
|
@Override
|
||||||
|
public boolean evaluate(CommandSender sender) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/** Textual representation of the default permission. */
|
/** Textual representation of the default permission. */
|
||||||
private final String title;
|
private final String title;
|
||||||
@ -26,9 +43,17 @@ public enum DefaultPermission {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the textual representation.
|
* Evaluates whether permission is granted to the sender or not.
|
||||||
*
|
*
|
||||||
* @return The textual representation
|
* @param sender the sender to process
|
||||||
|
* @return true if the sender has permission, false otherwise
|
||||||
|
*/
|
||||||
|
public abstract boolean evaluate(CommandSender sender);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the textual representation.
|
||||||
|
*
|
||||||
|
* @return the textual representation
|
||||||
*/
|
*/
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return title;
|
return title;
|
||||||
|
@ -224,7 +224,7 @@ public class PermissionsManager {
|
|||||||
* @param event Event instance.
|
* @param event Event instance.
|
||||||
*/
|
*/
|
||||||
public void onPluginEnable(PluginEnableEvent event) {
|
public void onPluginEnable(PluginEnableEvent event) {
|
||||||
// Get the plugin and it's name
|
// Get the plugin and its name
|
||||||
Plugin plugin = event.getPlugin();
|
Plugin plugin = event.getPlugin();
|
||||||
String pluginName = plugin.getName();
|
String pluginName = plugin.getName();
|
||||||
|
|
||||||
@ -280,41 +280,18 @@ public class PermissionsManager {
|
|||||||
return hasPermission(player, permissionNode, def);
|
return hasPermission(player, permissionNode, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasPermission(Player player, Iterable<PermissionNode> nodes, boolean def) {
|
|
||||||
for (PermissionNode node : nodes) {
|
|
||||||
if (!hasPermission(player, node, def)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasPermission(CommandSender sender, CommandDescription command) {
|
public boolean hasPermission(CommandSender sender, CommandDescription command) {
|
||||||
if (command.getPermission() == null) {
|
if (command.getPermission() == null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
DefaultPermission defaultPermission = command.getPermission().getDefaultPermission();
|
DefaultPermission defaultPermission = command.getPermission().getDefaultPermission();
|
||||||
boolean def = evaluateDefaultPermission(defaultPermission, sender);
|
boolean def = defaultPermission.evaluate(sender);
|
||||||
return (sender instanceof Player)
|
return (sender instanceof Player)
|
||||||
? hasPermission((Player) sender, command.getPermission(), def)
|
? hasPermission((Player) sender, command.getPermission(), def)
|
||||||
: def;
|
: def;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean evaluateDefaultPermission(DefaultPermission defaultPermission, CommandSender sender) {
|
|
||||||
switch (defaultPermission) {
|
|
||||||
case ALLOWED:
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case OP_ONLY:
|
|
||||||
return sender.isOp();
|
|
||||||
|
|
||||||
case NOT_ALLOWED:
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a player has permission.
|
* Check if a player has permission.
|
||||||
*
|
*
|
||||||
@ -329,7 +306,7 @@ public class PermissionsManager {
|
|||||||
if (!isEnabled())
|
if (!isEnabled())
|
||||||
return def;
|
return def;
|
||||||
|
|
||||||
return handler.hasPermission(player, node, def);
|
return handler.hasPermission(player, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -530,7 +507,7 @@ public class PermissionsManager {
|
|||||||
/**
|
/**
|
||||||
* Remove all groups of the specified player, if supported.
|
* Remove all groups of the specified player, if supported.
|
||||||
* Systems like Essentials GroupManager don't allow all groups to be removed from a player, thus the user will stay
|
* Systems like Essentials GroupManager don't allow all groups to be removed from a player, thus the user will stay
|
||||||
* in it's primary group. All the subgroups are removed just fine.
|
* in its primary group. All the subgroups are removed just fine.
|
||||||
*
|
*
|
||||||
* @param player The player to remove all groups from.
|
* @param player The player to remove all groups from.
|
||||||
*
|
*
|
||||||
|
@ -23,7 +23,7 @@ public class BPermissionsHandler implements PermissionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPermission(Player player, PermissionNode node, boolean def) {
|
public boolean hasPermission(Player player, PermissionNode node) {
|
||||||
return ApiLayer.hasPermission(player.getWorld().getName(), CalculableType.USER, player.getName(), node.getNode());
|
return ApiLayer.hasPermission(player.getWorld().getName(), CalculableType.USER, player.getName(), node.getNode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ public class GroupManagerHandler implements PermissionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPermission(Player player, PermissionNode node, boolean def) {
|
public boolean hasPermission(Player player, PermissionNode node) {
|
||||||
final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player);
|
final AnjoPermissionsHandler handler = groupManager.getWorldsHolder().getWorldPermissions(player);
|
||||||
return handler != null && handler.has(player, node.getNode());
|
return handler != null && handler.has(player, node.getNode());
|
||||||
}
|
}
|
||||||
|
@ -31,11 +31,10 @@ public interface PermissionHandler {
|
|||||||
*
|
*
|
||||||
* @param player The player.
|
* @param player The player.
|
||||||
* @param node The permission node.
|
* @param node The permission node.
|
||||||
* @param def Default returned if no permissions system is used.
|
|
||||||
*
|
*
|
||||||
* @return True if the player has permission.
|
* @return True if the player has permission.
|
||||||
*/
|
*/
|
||||||
boolean hasPermission(Player player, PermissionNode node, boolean def);
|
boolean hasPermission(Player player, PermissionNode node);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether the player is in the specified group.
|
* Check whether the player is in the specified group.
|
||||||
|
@ -21,7 +21,7 @@ public class PermissionsBukkitHandler implements PermissionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPermission(Player player, PermissionNode node, boolean def) {
|
public boolean hasPermission(Player player, PermissionNode node) {
|
||||||
return player.hasPermission(node.getNode());
|
return player.hasPermission(node.getNode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ public class PermissionsExHandler implements PermissionHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addToGroup(Player player, String group) {
|
public boolean addToGroup(Player player, String group) {
|
||||||
if(!PermissionsEx.getPermissionManager().getGroupNames().contains(group)) {
|
if (!PermissionsEx.getPermissionManager().getGroupNames().contains(group)) {
|
||||||
ConsoleLogger.showError("The plugin tried to set " + player + "'s group to '" + group + "', but it doesn't exist!");
|
ConsoleLogger.showError("The plugin tried to set " + player + "'s group to '" + group + "', but it doesn't exist!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -37,7 +37,7 @@ public class PermissionsExHandler implements PermissionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPermission(Player player, PermissionNode node, boolean def) {
|
public boolean hasPermission(Player player, PermissionNode node) {
|
||||||
PermissionUser user = permissionManager.getUser(player);
|
PermissionUser user = permissionManager.getUser(player);
|
||||||
return user.has(node.getNode());
|
return user.has(node.getNode());
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ public class VaultHandler implements PermissionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPermission(Player player, PermissionNode node, boolean def) {
|
public boolean hasPermission(Player player, PermissionNode node) {
|
||||||
return vaultProvider.has(player, node.getNode());
|
return vaultProvider.has(player, node.getNode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,12 +29,12 @@ public class ZPermissionsHandler implements PermissionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPermission(Player player, PermissionNode node, boolean def) {
|
public boolean hasPermission(Player player, PermissionNode node) {
|
||||||
Map<String, Boolean> perms = zPermissionsService.getPlayerPermissions(player.getWorld().getName(), null, player.getName());
|
Map<String, Boolean> perms = zPermissionsService.getPlayerPermissions(player.getWorld().getName(), null, player.getName());
|
||||||
if (perms.containsKey(node.getNode()))
|
if (perms.containsKey(node.getNode()))
|
||||||
return perms.get(node.getNode());
|
return perms.get(node.getNode());
|
||||||
else
|
else
|
||||||
return def;
|
return node.getDefaultPermission().evaluate(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user