public static function getRelatedFromAuth(Auth $auth) { $ret = array(); $pm = new PolicyManager(); $am = new ApiManager(); $allPolicies = $pm->getAllPolicies(true); $relatedPolicies = array(); $policyPropsArr = array(); $allApis = $am->getAllApis(true); $relatedApiIds = array(); $relatedApis = array(); $apiPropsArr = array(); foreach ($allPolicies as $policy) { /** * @var Policy $policy */ foreach ($policy->getAuthIds() as $authBucket) { if ($authBucket && $authBucket->getAuthIds() && in_array($auth->getId(), $authBucket->getAuthIds())) { $relatedPolicies[] = $policy; } } // foreach($authIds as $authId){ // if($authId === $auth->getId()){ // } // } } foreach ($relatedPolicies as $policy) { $props = $policy->getProperties(); if (!empty($props)) { $policyPropsArr[$policy->getId()] = array_keys($props); } $relatedApiIds = array_unique(array_merge($relatedApiIds, $policy->getApiIds())); } foreach ($allApis as $api) { /** * @var $api Api */ if (in_array($api->getId(), $relatedApiIds)) { $relatedApis[] = $api; } } foreach ($relatedApis as $api) { $props = $api->getProperties(); if (!empty($props)) { if ($api->getDisplayName()) { $apiPropsArr[$api->getDisplayName()] = array_keys($props); } else { $apiPropsArr[$api->getId()] = array_keys($props); } } } if (!empty($policyPropsArr)) { $ret["policy"] = $policyPropsArr; } if (!empty($apiPropsArr)) { $ret["api"] = $apiPropsArr; } return json_encode($ret); }
if ($policy === null) { $policy = $this->policyManager->getPolicy($id); $flowScope['isNew'] = false; $flowScope["relatedProperties"] = JsonPropertyPrinter::getRelatedFromPolicy($policy); } } /** * Put the policy in the flow scope for reference by other states and the views */ $flowScope['policy'] = $policy; } /** * On-exit callback for the "form" state * it should take the form submission and deserialize it into a Policy object and * stick it on the flowScope. * * @param $action * @param $flowScope */ public function deserializeForm($action, &$flowScope) { /** * @var Policy $policy */ $policy = $flowScope['policy']; // Only accept the id if we are creating a new one if ($flowScope['isNew']) { $policy->id = $this->_getParam('policy_id'); } $policy->setApiIds($this->getSelectedApis()); $policy->setAuthIds($this->getSelectedAuths()); $context = $this->getContextAndRates(); if ($context != null) { $contexts[] = $context; $policy->setContexts($contexts); } $policy->headerTransformations = SharedViewUtility::deserializeHeaderTransformations($this->getRequest());
/** * Callback function for the on-exit of the Auth subflow * We have already created the API and the Auth(s) so now we need to create a Policy * to hook them together * @param $action * @param $flowScope */ public function postAuthSubflow($action, &$flowScope) { $registry = Zend_Registry::getInstance(); $translate = $registry->get("Zend_Translate"); $authIds = $flowScope['authIds']; /** @var Api $api*/ $api = $flowScope['api']; $policy = PolicyController::createBasicPolicy(null, array($api->id), $authIds); $pm = new PolicyManager(); $result = $pm->createPolicy($policy); if ($result) { $this->_helper->FlashMessenger($translate->translate("Policy Created: ") . $policy->id); } else { $this->_helper->FlashMessenger($translate->translate("Error creating Policy")); } }
/** * If no param, returns last error * If param is exception, logs exception and sets error * If param is String, sets error * * @static * @param null $err * @return mixed */ public static function error($err = null) { if ($err == null) { return PolicyManager::$error; } if ($err instanceof Exception) { PolicyManager::$error = $err->getMessage(); LoggerInterface::logException($err, LoggerInterface::ERROR); } else { PolicyManager::$error = $err; LoggerInterface::log($err, LoggerInterface::ERROR); } }