Skip to content

Commit

Permalink
implement checking permissions of an offline player
Browse files Browse the repository at this point in the history
  • Loading branch information
EbonJaeger committed Jun 18, 2016
1 parent 3629c51 commit 16e9990
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
25 changes: 25 additions & 0 deletions src/main/java/fr/xephi/authme/permission/DefaultPermission.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package fr.xephi.authme.permission;

import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;

/**
Expand All @@ -13,6 +14,11 @@ public enum DefaultPermission {
public boolean evaluate(CommandSender sender) {
return false;
}

@Override
public boolean evaluateOffline(String name) {
return false;
}
},

/** Only players with OP status have permission. */
Expand All @@ -21,6 +27,12 @@ public boolean evaluate(CommandSender sender) {
public boolean evaluate(CommandSender sender) {
return sender.isOp();
}

@Override
public boolean evaluateOffline(String name) {
// TODO Gnat008 20160617: Is this safe?
return Bukkit.getOfflinePlayer(name).isOp();
}
},

/** Everyone is granted permission. */
Expand All @@ -29,6 +41,11 @@ public boolean evaluate(CommandSender sender) {
public boolean evaluate(CommandSender sender) {
return true;
}

@Override
public boolean evaluateOffline(String name) {
return true;
}
};

/** Textual representation of the default permission. */
Expand All @@ -50,6 +67,14 @@ public boolean evaluate(CommandSender sender) {
*/
public abstract boolean evaluate(CommandSender sender);

/**
* Evaluate whether permission is granted to an offline user.
*
* @param name The name to check
* @return True if the user has permission, false otherwise
*/
public abstract boolean evaluateOffline(String name);

/**
* Return the textual representation.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,14 +258,14 @@ public boolean hasPermission(CommandSender sender, PermissionNode permissionNode
*
* @return
*/
public boolean hasPermission(String name, PermissionNode permissionNode) {
public boolean hasPermissionOffline(String name, PermissionNode permissionNode) {
// Check if the permission node is null
if (permissionNode == null) {
return true;
}

if (!isEnabled()) {
return false;
return permissionNode.getDefaultPermission().evaluateOffline(name);
}

return handler.hasPermission(name, permissionNode);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/fr/xephi/authme/task/PurgeService.java
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ private Set<String> getFinalPurgeList(Set<String> initial) {
Set<String> toPurge = new HashSet<>();

for (String name : initial) {
if (!permissionsManager.hasPermission(name, PlayerStatePermission.BYPASS_PURGE)) {
if (!permissionsManager.hasPermissionOffline(name, PlayerStatePermission.BYPASS_PURGE)) {
toPurge.add(name);
}
}
Expand Down

0 comments on commit 16e9990

Please sign in to comment.