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/page.inc.php | |
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/page.inc.php')
-rw-r--r-- | modules-available/permissionmanager/page.inc.php | 96 |
1 files changed, 84 insertions, 12 deletions
diff --git a/modules-available/permissionmanager/page.inc.php b/modules-available/permissionmanager/page.inc.php index e68af462..053c099d 100644 --- a/modules-available/permissionmanager/page.inc.php +++ b/modules-available/permissionmanager/page.inc.php @@ -20,13 +20,20 @@ class Page_PermissionManager extends Page $users = Request::post('users', ''); $roles = Request::post('roles', ''); DbUpdate::addRoleToUser($users, $roles); - } else if ($action === 'removeRoleFromUser') { + } elseif ($action === 'removeRoleFromUser') { $users = Request::post('users', ''); $roles = Request::post('roles', ''); DbUpdate::removeRoleFromUser($users, $roles); - } else if ($action === 'deleteRole') { + } elseif ($action === 'deleteRole') { $id = Request::post('deleteId', false, 'string'); DbUpdate::deleteRole($id); + } elseif ($action === 'saveRole') { + $roleID = Request::post("roleid", false); + $roleName = Request::post("roleName"); + $locType = Request::post("include", "off") == "on" ? "include" : "exclude"; + $locations = Request::post("locations"); + $permissions = Request::post("permissions"); + DbUpdate::saveRole($roleName, $locType, $locations, $permissions, $roleID); } } @@ -35,14 +42,15 @@ class Page_PermissionManager extends Page */ protected function doRender() { - $show = Request::get("show", false); - // get menu button colors - $buttonColors = self::setButtonColors($show); - - $data = array(); + $show = Request::get("show", "roles"); // switch between tables, but always show menu to switch tables - if (!$show || $show === 'roles' || $show === 'users' || $show === 'locations') { + if ( $show === 'roles' || $show === 'users' || $show === 'locations' ) { + // get menu button colors + $buttonColors = self::setButtonColors($show); + + $data = array(); + Render::openTag('div', array('class' => 'row')); Render::addtemplate('_page', $buttonColors); Render::closeTag('div'); @@ -50,12 +58,49 @@ class Page_PermissionManager extends Page if ($show === "roles") { $data = array("roles" => GetData::getRoles()); Render::addTemplate('rolesTable', $data); - } else if ($show === "users") { + } elseif ($show === "users") { $data = array("user" => GetData::getUserData(), "roles" => GetData::getRoles()); Render::addTemplate('usersTable', $data); - } else if ($show === "locations") { + } elseif ($show === "locations") { Render::addTemplate('locationsTable', $data); } + } elseif ($show === "roleEditor") { + $data = array(); + + $roleID = Request::get("roleid", false); + $selectedLocations = array(); + if ($roleID) { + $roleData = GetData::getRoleData($roleID); + $selectedLocations = $roleData["locations"]; + $data["roleid"] = $roleID; + $data["roleName"] = $roleData["name"]; + $data["includeChecked"] = $roleData["locType"] == "include" ? "checked" : ""; + $data["selectedPermissions"] = implode(" ", $roleData["permissions"]); + } else { + $data["includeChecked"] = "checked"; + } + + $permissions = PermissionUtil::getPermissions(); + $permissionHTML = ""; + foreach ($permissions as $k => $v) { + $permissionHTML .= " + <div id='$k' class='panel panel-primary module-box' style='display: none;'> + <div class='panel-heading'> + <div class='checkbox'> + <input name='permissions[]' value='$k.*' type='checkbox' class='form-control'> + <label>$k</label> + </div> + </div> + <div class='panel-body'> + "; + $permissionHTML .= self::generateSubPermissionHTML($v, $k); + $permissionHTML .= "</div></div>"; + } + + $data["locations"] = GetData::getLocations($selectedLocations); + $data["moduleNames"] = array_keys($permissions); + $data["permissionHTML"] = $permissionHTML; + Render::addTemplate('roleEditor', $data); } } @@ -65,11 +110,11 @@ class Page_PermissionManager extends Page $buttonColors['rolesButtonClass'] = 'btn-primary'; $buttonColors['usersButtonClass'] = 'btn-default'; $buttonColors['locationsButtonClass'] = 'btn-default'; - } else if ($show === 'users') { + } elseif ($show === 'users') { $buttonColors['rolesButtonClass'] = 'btn-default'; $buttonColors['usersButtonClass'] = 'btn-primary'; $buttonColors['locationsButtonClass'] = 'btn-default'; - } else if ($show === 'locations') { + } elseif ($show === 'locations') { $buttonColors['rolesButtonClass'] = 'btn-default'; $buttonColors['usersButtonClass'] = 'btn-default'; $buttonColors['locationsButtonClass'] = 'btn-primary'; @@ -82,4 +127,31 @@ class Page_PermissionManager extends Page return $buttonColors; } + private static function generateSubPermissionHTML($subPermissions, $permissionString) + { + $html = "<ul class='list-group'>"; + foreach ($subPermissions as $k => $v) { + $tmpPermString = $permissionString.".".$k; + $checkBoxValue = $tmpPermString; + if (is_array($v)) { + $checkBoxValue .= ".*"; + } else { + $k .= " - ".$v; + } + $html .= " + <li class='list-group-item'> + <div class='checkbox'> + <input name='permissions[]' value='$checkBoxValue' type='checkbox' class='form-control'> + <label>$k</label> + </div> + "; + if (is_array($v)) { + $html .= self::generateSubPermissionHTML($v, $tmpPermString); + } + $html .= "</li>"; + } + $html .= "</ul>"; + return $html; + } + } |