summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
diff options
context:
space:
mode:
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.