diff options
author | KHobbits <rob@khobbits.co.uk> | 2011-09-20 13:36:55 +0100 |
---|---|---|
committer | KHobbits <rob@khobbits.co.uk> | 2011-09-20 13:36:55 +0100 |
commit | 1fd5222d40bad99a7f66a44c0b85b761100e2029 (patch) | |
tree | dd1528f5dd275b00afbb041a38d6e04f8a7063c3 /EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java | |
parent | ac1f2badc7680900ed9e42928d6df30dd55cc99b (diff) | |
parent | f2dd51cf573ccf403f687e5a863ba449af77b766 (diff) | |
download | Essentials-1fd5222d40bad99a7f66a44c0b85b761100e2029.tar Essentials-1fd5222d40bad99a7f66a44c0b85b761100e2029.tar.gz Essentials-1fd5222d40bad99a7f66a44c0b85b761100e2029.tar.lz Essentials-1fd5222d40bad99a7f66a44c0b85b761100e2029.tar.xz Essentials-1fd5222d40bad99a7f66a44c0b85b761100e2029.zip |
Merge remote branch 'remotes/ess/groupmanager' into essmaster
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. |