diff options
author | ElgarL <ElgarL@palmergames.com> | 2011-09-20 10:35:05 +0100 |
---|---|---|
committer | ElgarL <ElgarL@palmergames.com> | 2011-09-20 10:35:05 +0100 |
commit | f2dd51cf573ccf403f687e5a863ba449af77b766 (patch) | |
tree | 38e1140caf0d2abb7cafae0324cb1dee86a39849 /EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java | |
parent | d3f6e82474c2c67a3fb17a7b08a8a94b8eb7ae60 (diff) | |
download | Essentials-f2dd51cf573ccf403f687e5a863ba449af77b766.tar Essentials-f2dd51cf573ccf403f687e5a863ba449af77b766.tar.gz Essentials-f2dd51cf573ccf403f687e5a863ba449af77b766.tar.lz Essentials-f2dd51cf573ccf403f687e5a863ba449af77b766.tar.xz Essentials-f2dd51cf573ccf403f687e5a863ba449af77b766.zip |
Fix for pushing perms of non superperms supporting plugins
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java')
-rw-r--r--[-rwxr-xr-x] | EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index b892e653e..5830f0c88 100755..100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -79,6 +79,76 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { public String getGroup(String userName) { return ph.getUser(userName).getGroup().getName(); } + + /** + * Returns All permissions (including inheritance) of player name. + * @param userName + * @return + */ + @Override + public List<String> getAllPlayersPermissions(String userName) { + + User user = ph.getUser(userName); + List<String> playerPermArray = new ArrayList<String>(user.getPermissionList()); + List<String> playerMainGroupPermArray = new ArrayList<String>(user.getGroup().getPermissionList()); + List<String> subGroupsPermArray = new ArrayList<String>(); + List<String> returnPermArray = new ArrayList<String>(); + + for (String subGroup : user.subGroupListStringCopy()) { + subGroupsPermArray.addAll(ph.getGroup(subGroup).getPermissionList()); + } + + for (String permission : subGroupsPermArray) { + /* + * Add each Negated permission + * unless it's being overridden by a higher permission + */ + if (permission.startsWith("-") + && !playerMainGroupPermArray.contains(permission.substring(1)) + && !playerPermArray.contains(permission.substring(1)) + && !playerMainGroupPermArray.contains("*") + && !playerPermArray.contains("*")) { + if (!returnPermArray.contains(permission)) { + returnPermArray.add(permission); + } + } else + if (!returnPermArray.contains(permission) + && !playerMainGroupPermArray.contains("-"+permission) + && !playerPermArray.contains("-"+permission)) { + returnPermArray.add(permission); + } + } + + for (String permission : playerMainGroupPermArray) { + /* + * Add each Negated permission + * unless it's being overridden by a higher permission + */ + if (permission.startsWith("-") + && !playerPermArray.contains(permission.substring(1)) + && !playerMainGroupPermArray.contains("*") + && !playerPermArray.contains("*")) { + if (!returnPermArray.contains(permission)) { + returnPermArray.add(permission); + } + } else + if (!returnPermArray.contains(permission) + && !playerPermArray.contains("-"+permission)) { + returnPermArray.add(permission); + } + } + + for (String permission : playerPermArray) { + /* + * Add each permission + */ + if (!returnPermArray.contains(permission)) { + returnPermArray.add(permission); + } + } + + return returnPermArray; + } /** * Verify if player is in suck group. |