/** * @param AbstractAjxpUser $userObject * @param string $rolePrefix get all roles with prefix * @param string $includeString get roles in this string * @param string $excludeString eliminate roles in this string * @param bool $byUserRoles * @return array */ public function getUserRoleList($userObject, $rolePrefix, $includeString, $excludeString, $byUserRoles = false) { if (!$userObject) { return array(); } if ($byUserRoles) { $allUserRoles = $userObject->getRoles(); } else { $allUserRoles = AuthService::getRolesList(array(), true); } $allRoles = array(); if (isset($allUserRoles)) { // Exclude if ($excludeString) { if (strpos($excludeString, "preg:") !== false) { $matchFilterExclude = "/" . str_replace("preg:", "", $excludeString) . "/i"; } else { $valueFiltersExclude = array_map("trim", explode(",", $excludeString)); $valueFiltersExclude = array_map("strtolower", $valueFiltersExclude); } } // Include if ($includeString) { if (strpos($includeString, "preg:") !== false) { $matchFilterInclude = "/" . str_replace("preg:", "", $includeString) . "/i"; } else { $valueFiltersInclude = array_map("trim", explode(",", $includeString)); $valueFiltersInclude = array_map("strtolower", $valueFiltersInclude); } } foreach ($allUserRoles as $roleId => $role) { if (!empty($rolePrefix) && strpos($roleId, $rolePrefix) === false) { continue; } if (isset($matchFilterExclude) && preg_match($matchFilterExclude, substr($roleId, strlen($rolePrefix)))) { continue; } if (isset($valueFiltersExclude) && in_array(strtolower(substr($roleId, strlen($rolePrefix))), $valueFiltersExclude)) { continue; } if (isset($matchFilterInclude) && !preg_match($matchFilterInclude, substr($roleId, strlen($rolePrefix)))) { continue; } if (isset($valueFiltersInclude) && !in_array(strtolower(substr($roleId, strlen($rolePrefix))), $valueFiltersInclude)) { continue; } if (is_a($role, "AJXP_Role")) { $roleObject = $role; } else { $roleObject = AuthService::getRole($roleId); } $label = $roleObject->getLabel(); $label = !empty($label) ? $label : substr($roleId, strlen($rolePrefix)); $allRoles[$roleId] = $label; } } return $allRoles; }
/** * @param AbstractAjxpUser $userObject */ public function updateUserObject(&$userObject) { $applyRole = $this->getOption("AUTO_APPLY_ROLE"); if (!empty($applyRole) && !(is_array($userObject->getRoles()) && array_key_exists($applyRole, $userObject->getRoles()))) { $rObject = AuthService::getRole($applyRole, true); $userObject->addRole($rObject); $userObject->save("superuser"); } }