From d3f6e82474c2c67a3fb17a7b08a8a94b8eb7ae60 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 19 Sep 2011 22:51:07 +0100 Subject: - Push updates to superperms for all valid GM commands. --- .../permissions/BukkitPermissions.java | 34 ++++++++++------------ 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index fe381c127..c88f48d6c 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -18,12 +18,13 @@ package org.anjocaido.groupmanager.permissions; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; import org.anjocaido.groupmanager.GroupManager; import org.anjocaido.groupmanager.data.User; +import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder; +import org.anjocaido.groupmanager.utils.PermissionCheckResult; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -40,6 +41,7 @@ import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.event.server.ServerListener; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionAttachment; +import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; @@ -114,9 +116,10 @@ public class BukkitPermissions { } PermissionAttachment attachment = this.attachments.get(player); + + OverloadedWorldHolder worldData = GroupManager.getWorldsHolder().getWorldData(world); - User user = GroupManager.getWorldsHolder().getWorldData(world).getUser(player.getName()); - List permissions = user.getGroup().getPermissionList(); + User user = worldData.getUser(player.getName()); // clear permissions for (String permission : attachment.getPermissions().keySet()) { @@ -125,24 +128,19 @@ public class BukkitPermissions { // find matching permissions for (Permission permission : registeredPermissions) { - boolean permissionValue = user.getGroup().hasSamePermissionNode(permission.getName()); - attachment.setPermission(permission, permissionValue); - } - - // all permissions - for (String permission : permissions) { - Boolean value = true; - if (permission.startsWith("-")) { - permission = permission.substring(1); // cut off - + PermissionCheckResult permissionResult = worldData.getPermissionsHandler().checkFullUserPermission(user, permission.getName()); + Boolean value = false; + if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { value = false; - } - - if (!attachment.getPermissions().containsKey(permission)) { - attachment.setPermission(permission, value); - } - } + } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) + value = true; + + + attachment.setPermission(permission, value); + } player.recalculatePermissions(); + /* // List perms for this player GroupManager.logger.info("Attachment Permissions:"); -- cgit v1.2.3 From f2dd51cf573ccf403f687e5a863ba449af77b766 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Tue, 20 Sep 2011 10:35:05 +0100 Subject: Fix for pushing perms of non superperms supporting plugins --- .../permissions/BukkitPermissions.java | 33 ++++++++++++++++------ 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index c88f48d6c..b82a8f473 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -16,8 +16,10 @@ package org.anjocaido.groupmanager.permissions; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -115,11 +117,12 @@ public class BukkitPermissions { world = player.getWorld().getName(); } + // All permissions registered with Bukkit for this player PermissionAttachment attachment = this.attachments.get(player); OverloadedWorldHolder worldData = GroupManager.getWorldsHolder().getWorldData(world); - User user = worldData.getUser(player.getName()); + User user = worldData.getUser(player.getName()); // clear permissions for (String permission : attachment.getPermissions().keySet()) { @@ -127,18 +130,32 @@ public class BukkitPermissions { } // find matching permissions + PermissionCheckResult permissionResult; + Boolean value; for (Permission permission : registeredPermissions) { - PermissionCheckResult permissionResult = worldData.getPermissionsHandler().checkFullUserPermission(user, permission.getName()); - Boolean value = false; - if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { - value = false; - } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) + permissionResult = worldData.getPermissionsHandler().checkFullUserPermission(user, permission.getName()); + if (permissionResult.resultType.equals(PermissionCheckResult.Type.FOUND)) value = true; - + else + value = false; attachment.setPermission(permission, value); - } + } + // Add any missing permissions for this player (non bukkit plugins) + List playerPermArray = new ArrayList(worldData.getPermissionsHandler().getAllPlayersPermissions(player.getName())); + + for (String permission : playerPermArray) { + value = true; + if (permission.startsWith("-")) { + permission = permission.substring(1); // cut off - + value = false; + } + + if (!attachment.getPermissions().containsKey(permission)) { + attachment.setPermission(permission, value); + } + } player.recalculatePermissions(); /* -- cgit v1.2.3