diff --git a/app/controllers/ACL.java b/app/controllers/ACL.java index bb34843c..7be5f4a3 100644 --- a/app/controllers/ACL.java +++ b/app/controllers/ACL.java @@ -305,7 +305,7 @@ public static void updaterole(@Required String name) { role.privileges = null; if (selectedprivilegenames != null) { if (selectedprivilegenames.length > 0) { - role.privileges = Privileges.getJSONPrivileges(selectedprivilegenames).toJSONString(); + role.privileges = Privileges.getJSONStringPrivileges(selectedprivilegenames); } } diff --git a/app/ext/Bootstrap.java b/app/ext/Bootstrap.java index 3bcf2e64..6044d00e 100644 --- a/app/ext/Bootstrap.java +++ b/app/ext/Bootstrap.java @@ -112,13 +112,13 @@ public void doJob() { ACLRole role_admim = ACLRole.findById(ACLRole.ADMIN_NAME); if (role_admim == null) { role_admim = new ACLRole(ACLRole.ADMIN_NAME); - role_admim.privileges = Privileges.getJSONAllPrivileges().toJSONString(); + role_admim.privileges = Privileges.getJSONArrayStringPrivileges(); role_admim.functionalities = "{}"; role_admim.save(); } else { List privileges = role_admim.getPrivilegesList(); - if (privileges.size() != Privileges.getAllPrivileges().size()) { - role_admim.privileges = Privileges.getJSONAllPrivileges().toJSONString(); + if (privileges.containsAll(Privileges.getAllSortedPrivileges()) == false) { + role_admim.privileges = Privileges.getJSONArrayStringPrivileges(); role_admim.save(); } } diff --git a/app/hd3gtv/mydmam/web/Privileges.java b/app/hd3gtv/mydmam/web/Privileges.java index f34738f4..10a8cca2 100644 --- a/app/hd3gtv/mydmam/web/Privileges.java +++ b/app/hd3gtv/mydmam/web/Privileges.java @@ -32,7 +32,8 @@ import java.util.jar.JarEntry; import java.util.jar.JarFile; -import org.json.simple.JSONArray; +import com.google.gson.JsonArray; +import com.google.gson.JsonPrimitive; import controllers.Check; import controllers.Secure; @@ -46,10 +47,11 @@ @SuppressWarnings({ "rawtypes", "unchecked" }) public class Privileges { - private static HashSet all_privileges; + private static final List privileges; + private static final String privileges_json_array; static { - all_privileges = new HashSet(); + HashSet all_privileges = new HashSet(); try { List classes_to_test = new ArrayList(); @@ -186,30 +188,32 @@ public boolean accept(File arg0, String arg1) { } AJSController.putAllPrivilegesNames(all_privileges); - } - - public static HashSet getAllPrivileges() { - return all_privileges; + + ArrayList list = new ArrayList(all_privileges); + Collections.sort(list); + privileges = Collections.unmodifiableList(list); + + JsonArray ja_privileges = new JsonArray(); + for (int pos = 0; pos < privileges.size(); pos++) { + ja_privileges.add(new JsonPrimitive(privileges.get(pos))); + } + privileges_json_array = ja_privileges.toString(); } public static List getAllSortedPrivileges() { - ArrayList list = new ArrayList(all_privileges); - Collections.sort(list); - return list; + return privileges; } - public static JSONArray getJSONAllPrivileges() { - JSONArray ja = new JSONArray(); - ja.addAll(all_privileges); - return ja; + public static String getJSONArrayStringPrivileges() { + return privileges_json_array; } - public static JSONArray getJSONPrivileges(String[] privilegenames) { - JSONArray ja = new JSONArray(); + public static String getJSONStringPrivileges(String[] privilegenames) { + JsonArray ja = new JsonArray(); for (int pos = 0; pos < privilegenames.length; pos++) { - ja.add(privilegenames[pos]); + ja.add(new JsonPrimitive(privilegenames[pos])); } - return ja; + return ja.toString(); } }