diff options
author | ElgarL <ElgarL@palmergames.com> | 2013-01-14 06:47:50 +0000 |
---|---|---|
committer | ElgarL <ElgarL@palmergames.com> | 2013-01-14 06:47:50 +0000 |
commit | 04c833f6486ed8da1fed0431f7aaa5cd5769c797 (patch) | |
tree | 3be81e11626b3d4007939c0033efa06e54e8212a | |
parent | 4533d09fc978e4bf2343eb535f9437fb066e3025 (diff) | |
download | Essentials-04c833f6486ed8da1fed0431f7aaa5cd5769c797.tar Essentials-04c833f6486ed8da1fed0431f7aaa5cd5769c797.tar.gz Essentials-04c833f6486ed8da1fed0431f7aaa5cd5769c797.tar.lz Essentials-04c833f6486ed8da1fed0431f7aaa5cd5769c797.tar.xz Essentials-04c833f6486ed8da1fed0431f7aaa5cd5769c797.zip |
Fix recursive loop when used on offline servers.
-rw-r--r-- | EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index 59efb33dc..7396f3f70 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -768,6 +768,9 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** + * Wrapper for offline server checks. + * Looks for the 'groupmanager.noofflineperms' permissions and reports no permissions on servers set to offline. + * * Check user and groups with inheritance and Bukkit if bukkit = true return * a PermissionCheckResult. * @@ -778,23 +781,42 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { */ public PermissionCheckResult checkFullGMPermission(User user, String targetPermission, Boolean checkBukkit) { - PermissionCheckResult result = new PermissionCheckResult(); - result.accessLevel = targetPermission; - result.resultType = PermissionCheckResult.Type.NOTFOUND; - - if (user == null || targetPermission == null || targetPermission.isEmpty()) { - return result; - } - /* - * Do not push any perms to bukkit if... + * Report no permissions under the following conditions. + * * We are in offline mode * and the player has the 'groupmanager.noofflineperms' permission. */ - if (!Bukkit.getServer().getOnlineMode() - && (checkFullGMPermission(user, "groupmanager.noofflineperms", true).resultType == PermissionCheckResult.Type.FOUND)) + if (user == null || targetPermission == null || targetPermission.isEmpty() || + (!Bukkit.getServer().getOnlineMode() + && (checkPermission(user, "groupmanager.noofflineperms", true).resultType == PermissionCheckResult.Type.FOUND))) { + + PermissionCheckResult result = new PermissionCheckResult(); + result.accessLevel = targetPermission; + result.resultType = PermissionCheckResult.Type.NOTFOUND; + return result; + } + + return checkPermission(user, targetPermission, checkBukkit); + } + + /** + * + * Check user and groups with inheritance and Bukkit if bukkit = true return + * a PermissionCheckResult. + * + * @param user + * @param targetPermission + * @param checkBukkit + * @return PermissionCheckResult + */ + private PermissionCheckResult checkPermission(User user, String targetPermission, Boolean checkBukkit) { + PermissionCheckResult result = new PermissionCheckResult(); + result.accessLevel = targetPermission; + result.resultType = PermissionCheckResult.Type.NOTFOUND; + if (checkBukkit) { // Check Bukkit perms to support plugins which add perms via code // (Heroes). |