diff options
author | Udo Walter | 2017-03-28 15:11:57 +0200 |
---|---|---|
committer | Udo Walter | 2017-03-28 15:11:57 +0200 |
commit | cca740195f76ef89563ab5c00a76c492a462d752 (patch) | |
tree | 05329226d22262de98e8a6dd5bbabf41f11ff0f4 /modules-available/permissionmanager/inc | |
parent | [permission-manager] role-list order consistency (diff) | |
download | slx-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')
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 |