* GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. */ $ROL_UID = $_GET['rUID']; $TYPE_DATA = $_GET["type"]; global $RBAC; $filter = isset($_REQUEST['textFilter']) ? $_REQUEST['textFilter'] : ''; //BUG 7554: erik/ hook for existents environments that have not PM_CANCELCASE if ($RBAC->permissionsObj->loadByCode('PM_CANCELCASE') === false) { $RBAC->permissionsObj->create(array('PER_CODE' => 'PM_CANCELCASE', 'PER_CREATE_DATE' => date('Y-m-d H:i:s'))); } if ($TYPE_DATA == 'list') { $oDataset = $RBAC->getRolePermissions($ROL_UID, $filter, 1); } if ($TYPE_DATA == 'show') { $oDataset = $RBAC->getAllPermissions($ROL_UID, $RBAC->sSystem, $filter, 1); } $rows = array(); $per = new RolesPermissions(); while ($oDataset->next()) { $row = $oDataset->getRow(); $per->setPerUid($row['PER_UID']); $row['PER_NAME'] = $per->getPermissionName(); $rows[] = $row; } echo '{permissions: ' . G::json_encode($rows) . '}';
function deletePermissionRole($ROL_UID, $PER_UID) { $crit = new Criteria(); $crit->add(RolesPermissionsPeer::ROL_UID, $ROL_UID); $crit->add(RolesPermissionsPeer::PER_UID, $PER_UID); RolesPermissionsPeer::doDelete($crit); $o = new RolesPermissions(); $o->setPerUid($PER_UID); $permission = $o->getPermissionName($PER_UID); $role = $this->load($ROL_UID); G::auditLog("DeletePermissionToRole", "Delete Permission " . $permission . " (" . $PER_UID . ") from Role " . $role['ROL_NAME'] . " (" . $ROL_UID . ") "); }
/** * Get all Permissions of a Role * * @param string $roleUid Unique id of Role * @param string $option Option (PERMISSIONS, AVAILABLE-PERMISSIONS) * @param array $arrayFilterData Data of the filters * @param string $sortField Field name to sort * @param string $sortDir Direction of sorting (ASC, DESC) * @param int $start Start * @param int $limit Limit * * return array Return an array with all Permissions of a Role */ public function getPermissions($roleUid, $option, array $arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null) { try { $arrayPermission = array(); //Verify data $process = new \ProcessMaker\BusinessModel\Process(); $role = new \ProcessMaker\BusinessModel\Role(); $role->throwExceptionIfNotExistsRole($roleUid, $this->arrayFieldNameForException["roleUid"]); $process->throwExceptionIfDataNotMetFieldDefinition(array("OPTION" => $option), array("OPTION" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("PERMISSIONS", "AVAILABLE-PERMISSIONS"), "fieldNameAux" => "option")), array("option" => "\$option"), true); $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException); //Get data if (!is_null($limit) && $limit . "" == "0") { return $arrayPermission; } //Set variables $rolePermission = new \RolesPermissions(); //SQL switch ($option) { case "PERMISSIONS": //Criteria $criteria = $this->getPermissionCriteria($roleUid); break; case "AVAILABLE-PERMISSIONS": //Get Uids $arrayUid = array(); $criteria = $this->getPermissionCriteria($roleUid); $rsCriteria = \PermissionsPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $arrayUid[] = $row["PER_UID"]; } //Criteria $criteria = $this->getPermissionCriteria("", $arrayUid); break; } if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") { $criteria->add(\PermissionsPeer::PER_CODE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE); } //SQL if (!is_null($sortField) && trim($sortField) != "") { $sortField = strtoupper($sortField); if (in_array($sortField, array("PER_UID", "PER_CODE"))) { $sortField = \PermissionsPeer::TABLE_NAME . "." . $sortField; } else { $sortField = \PermissionsPeer::PER_CODE; } } else { $sortField = \PermissionsPeer::PER_CODE; } if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") { $criteria->addDescendingOrderByColumn($sortField); } else { $criteria->addAscendingOrderByColumn($sortField); } if (!is_null($start)) { $criteria->setOffset((int) $start); } if (!is_null($limit)) { $criteria->setLimit((int) $limit); } $rsCriteria = \PermissionsPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $rolePermission->setPerUid($row["PER_UID"]); $row["PER_NAME"] = $rolePermission->getPermissionName(); $arrayPermission[] = $this->getPermissionDataFromRecord($row); } //Return return $arrayPermission; } catch (\Exception $e) { throw $e; } }