/** * @url POST import */ public function post() { try { $session = Session::singleton(); $allowedRoles = (array) Config::get('allowedRolesForExcelImport', 'excelImport'); if (Config::get('loginEnabled') && !is_null($allowedRoles)) { $ok = false; $sessionRoles = Role::getAllSessionRoles(); foreach ($sessionRoles as $role) { if (in_array($role->label, $allowedRoles)) { $ok = true; } } if (!$ok) { throw new Exception("You do not have access to import excel files", 401); } } if (is_uploaded_file($_FILES['file']['tmp_name'])) { // Parse: $parser = new ImportExcel($_FILES['file']['tmp_name']); $result = $parser->ParseFile(); unlink($_FILES['file']['tmp_name']); } else { Notifications::addError('No file uploaded'); } $result = array('notifications' => $result, 'files' => $_FILES); return $result; } catch (Exception $e) { throw new RestException($e->getCode(), $e->getMessage()); } }
public function setRole($roleId = null) { $roles = Config::get('loginEnabled') ? Role::getAllSessionRoles() : Role::getAllRoleObjects(); if (empty($roles) || $roleId == 0) { $this->role = new Role(0); } elseif (is_null($roleId)) { $this->role = current($roles); } elseif (isset($roleId)) { if (!is_int($roleId)) { throw new Exception("roleId must be an integer", 400); } foreach ($roles as $role) { if ($role->id == $roleId) { $this->role = $role; } } if (!isset($this->role)) { throw new Exception("You do not have access to the selected role", 401); } } else { throw new Exception("No role could be selected", 500); } if (Config::get('loginEnabled')) { $arr = array(); foreach ($roles as $role) { $arr = array_merge($arr, $role->interfaces); } $this->accessibleInterfaces = array_unique($arr); } Notifications::addLog("Role " . $this->role->name . " selected", 'SESSION'); return $this->role->id; }
/** * @url GET run */ public function run() { try { $session = Session::singleton(); $db = Database::singleton(); $allowedRoles = (array) Config::get('allowedRolesForRunFunction', 'execEngine'); if (Config::get('loginEnabled') && !is_null($allowedRoles)) { $ok = false; $sessionRoles = Role::getAllSessionRoles(); foreach ($sessionRoles as $role) { if (in_array($role->label, $allowedRoles)) { $ok = true; } } if (!$ok) { throw new Exception("You do not have access to run the exec engine", 401); } } $session->setRole(); ExecEngine::runAllRules(); $db->closeTransaction('Run completed', false, true, false); $result = array('notifications' => Notifications::getAll()); return $result; } catch (Exception $e) { throw new RestException($e->getCode(), $e->getMessage()); } }
/** * @url GET navBar * @param int $roleId */ public function getNavBar($roleId = 0) { try { $session = Session::singleton(); $session->setRole($roleId); // top level interfaces foreach ($session->role->getInterfacesForNavBar() as $ifc) { $top[] = array('id' => $ifc->id, 'label' => $ifc->label, 'link' => '/' . $ifc->id); } // new interfaces foreach ($session->role->getInterfacesToCreateAtom() as $ifc) { $new[] = array('id' => $ifc->id, 'label' => $ifc->label, 'link' => '/' . $ifc->id); } // roles $roles = array(); $allRoles = Config::get('loginEnabled') ? Role::getAllSessionRoles() : Role::getAllRoleObjects(); foreach ((array) $allRoles as $role) { $roles[] = array('id' => $role->id, 'label' => $role->label); } return array('top' => $top, 'new' => $new, 'refreshMenu' => $GLOBALS['navBar']['refreshMenu'], 'appMenu' => $GLOBALS['navBar']['appMenu'], 'roleMenu' => $GLOBALS['navBar']['roleMenu'], 'roles' => $roles, 'defaultSettings' => array('notifications' => Notifications::getDefaultSettings()), 'notifications' => Notifications::getAll(), 'session' => array('id' => $session->id, 'loggedIn' => Session::sessionUserLoggedIn(), 'sessionRoles' => $roles), 'sessionVars' => Session::getSessionVars()); } catch (Exception $e) { throw new RestException($e->getCode(), $e->getMessage()); } }