summaryrefslogtreecommitdiffstats
path: root/modules-available/permissionmanager/inc
diff options
context:
space:
mode:
authorUdo Walter2017-03-28 15:11:57 +0200
committerUdo Walter2017-03-28 15:11:57 +0200
commitcca740195f76ef89563ab5c00a76c492a462d752 (patch)
tree05329226d22262de98e8a6dd5bbabf41f11ff0f4 /modules-available/permissionmanager/inc
parent[permission-manager] role-list order consistency (diff)
downloadslx-admin-cca740195f76ef89563ab5c00a76c492a462d752.tar.gz
slx-admin-cca740195f76ef89563ab5c00a76c492a462d752.tar.xz
slx-admin-cca740195f76ef89563ab5c00a76c492a462d752.zip
[permission-manager] added role editor (new role and edit role)
Diffstat (limited to 'modules-available/permissionmanager/inc')
-rw-r--r--modules-available/permissionmanager/inc/dbupdate.inc.php17
-rw-r--r--modules-available/permissionmanager/inc/getdata.inc.php28
-rw-r--r--modules-available/permissionmanager/inc/permissionutil.inc.php37
3 files changed, 82 insertions, 0 deletions
diff --git a/modules-available/permissionmanager/inc/dbupdate.inc.php b/modules-available/permissionmanager/inc/dbupdate.inc.php
index 20ff746a..417fd812 100644
--- a/modules-available/permissionmanager/inc/dbupdate.inc.php
+++ b/modules-available/permissionmanager/inc/dbupdate.inc.php
@@ -34,4 +34,21 @@ class DbUpdate {
Database::exec($query);
}
+ public static function saveRole($roleName, $locType, $locations, $permissions, $role = NULL) {
+ if ($role) {
+ Database::exec("UPDATE role SET name = '$roleName', locType = '$locType' WHERE id = $role");
+ Database::exec("DELETE FROM roleXlocation WHERE roleid = $role");
+ Database::exec("DELETE FROM roleXpermission WHERE roleid = $role");
+ } else {
+ Database::exec("INSERT INTO role (name, locType) VALUES ('$roleName', '$locType')");
+ $role = Database::lastInsertId();
+ }
+ foreach ($locations as $locID) {
+ Database::exec("INSERT INTO roleXlocation (roleid, locid) VALUES ($role, $locID)");
+ }
+ foreach ($permissions as $permission) {
+ Database::exec("INSERT INTO roleXpermission (roleid, permissionid) VALUES ($role, '$permission')");
+ }
+ }
+
}
diff --git a/modules-available/permissionmanager/inc/getdata.inc.php b/modules-available/permissionmanager/inc/getdata.inc.php
index 481ac398..67210246 100644
--- a/modules-available/permissionmanager/inc/getdata.inc.php
+++ b/modules-available/permissionmanager/inc/getdata.inc.php
@@ -29,6 +29,34 @@ class GetData {
return $data;
}
+ public static function getLocations($selected) {
+ $res = Database::simplequery("SELECT locationid, locationname FROM location");
+ $data = array();
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ $data[] = array('locid' => $row['locationid'], 'locName' => $row['locationname'],
+ 'selected' => in_array($row['locationid'], $selected) ? "selected" : "");
+ }
+ return $data;
+ }
+
+ public static function getRoleData($roleID) {
+ $query = "SELECT id, name, locType FROM role WHERE id = $roleID";
+ $data = Database::queryFirst($query);
+ $query = "SELECT roleid, locid FROM roleXlocation WHERE roleid = $roleID";
+ $res = Database::simpleQuery($query);
+ $data["locations"] = array();
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ $data["locations"][] = $row['locid'];
+ }
+ $query = "SELECT roleid, permissionid FROM roleXpermission WHERE roleid = $roleID";
+ $res = Database::simpleQuery($query);
+ $data["permissions"] = array();
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ $data["permissions"][] = $row['permissionid'];
+ }
+ return $data;
+ }
+
// UserID, User Login Name, Roles of each User
private static function queryUserData() {
$res = Database::simpleQuery("SELECT user.userid AS userid, user.login AS login, GROUP_CONCAT(role.name ORDER BY role.name ASC) AS role
diff --git a/modules-available/permissionmanager/inc/permissionutil.inc.php b/modules-available/permissionmanager/inc/permissionutil.inc.php
new file mode 100644
index 00000000..10f2a61a
--- /dev/null
+++ b/modules-available/permissionmanager/inc/permissionutil.inc.php
@@ -0,0 +1,37 @@
+<?php
+
+class PermissionUtil
+{
+ public static function getPermissions()
+ {
+ $permissions = array();
+ foreach (glob("modules/*/permissions/permissions.json", GLOB_NOSORT) as $file) {
+ $data = json_decode(file_get_contents($file), true);
+ if (!is_array($data))
+ continue;
+ preg_match('#^modules/([^/]+)/#', $file, $out);
+ $newData = array();
+ foreach( $data as $k => $v ) {
+ $newData[] = $v;
+ $permissions = self::putInPermissionTree($out[1].".".$k, $v, $permissions);
+ }
+ }
+ return $permissions;
+ }
+
+ private function putInPermissionTree($permission, $description, $tree)
+ {
+ $subPermissions = explode('.', $permission);
+ $original =& $tree;
+ foreach ($subPermissions as $subPermission) {
+ if ($subPermission) {
+ if (!array_key_exists($subPermission, $tree)) {
+ $tree[$subPermission] = array();
+ }
+ $tree =& $tree[$subPermission];
+ }
+ }
+ $tree = $description;
+ return $original;
+ }
+} \ No newline at end of file