summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2011-09-20 13:36:55 +0100
committerKHobbits <rob@khobbits.co.uk>2011-09-20 13:36:55 +0100
commit1fd5222d40bad99a7f66a44c0b85b761100e2029 (patch)
treedd1528f5dd275b00afbb041a38d6e04f8a7063c3 /EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
parentac1f2badc7680900ed9e42928d6df30dd55cc99b (diff)
parentf2dd51cf573ccf403f687e5a863ba449af77b766 (diff)
downloadEssentials-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.java70
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.