Skip to content
Snippets Groups Projects
Commit 5f0f625b authored by Dominik Baránek's avatar Dominik Baránek Committed by Pavel Břoušek
Browse files

perf: use getFacilitiesByAttributeWithAttributes

parent c08a7ae1
No related branches found
No related tags found
1 merge request!300refactor: use getFacilitiesByAttributeWithAttributes
......@@ -824,6 +824,26 @@ class AdapterRpc extends Adapter
return $this->connector->post('facilitiesManager', 'createFacility', $facility);
}
public function getFacilitiesByAttributeWithAttributes($attributeName, $attributeValue, $attrNames)
{
$facilitiesWithAttributes = $this->connector->post(
'facilitiesManager',
'getFacilitiesByAttributeWithAttributes',
['attributeName' => $attributeName, 'attributeValue' => $attributeValue, 'attrNames' => $attrNames]
);
$attrNamesMap = AttributeUtils::getRpcAttrNames($attrNames);
foreach ($facilitiesWithAttributes as $facilityWithAttributes) {
$facilityWithAttributes['attributes'] = $this->getAttributes(
$facilityWithAttributes['attributes'],
$attrNamesMap
);
}
return $facilitiesWithAttributes;
}
private function getAttributes($perunAttrs, $attrNamesMap)
{
$attributes = [];
......
......@@ -172,42 +172,36 @@ class MetadataFromPerun
return $allAttrNames;
}
/**
* Get all facilities with proxyIdentifiers.
*/
private function getFacilities()
{
$perunProxyIdentifierAttr = $this->conf->getString(self::PERUN_PROXY_IDENTIFIER_ATTR_NAME);
$perunProxyIdentifierRpcAttrName = AttributeUtils::getRpcAttrName($perunProxyIdentifierAttr);
$proxyIdentifier = $this->conf->getString(self::PROXY_IDENTIFIER);
$attributeDefinition = [
$perunProxyIdentifierRpcAttrName => $proxyIdentifier,
];
return $this->rpcAdapter->searchFacilitiesByAttributeValue($attributeDefinition);
}
/*+
* Get facilities with attributes.
*/
private function getFacilitiesWithAttributes()
{
$perunProxyIdentifierAttr = $this->conf->getString(self::PERUN_PROXY_IDENTIFIER_ATTR_NAME);
$perunProxyIdentifierRpcAttrName = AttributeUtils::getRpcAttrName($perunProxyIdentifierAttr);
$allAttrNames = $this->getAllAttributeNames();
$facilitiesWithAttributes = [];
foreach ($this->getFacilities() as $facility) {
$attributes = $this->rpcAdapter->getFacilityAttributes($facility, $allAttrNames);
$facilitiesWithAttributes = $this->rpcAdapter->getFacilitiesByAttributeWithAttributes(
$perunProxyIdentifierRpcAttrName,
$this->conf->getString(self::PROXY_IDENTIFIER),
$allAttrNames
);
$facilitiesWithAttributesRes = [];
foreach ($facilitiesWithAttributes as $facilityWithAttributes) {
$attributes = $facilityWithAttributes['attributes'];
$facilityAttributes = [];
foreach ($attributes as $attribute) {
$facilityAttributes[$attribute['name']] = $attribute;
}
if (!empty($facilityAttributes[$this->perunProxyEntityIDAttr]['value'])) {
$facilitiesWithAttributes[$facility->getId()] = [
'facility' => $facility,
$facilitiesWithAttributesRes[$facilityWithAttributes['facility']['id']] = [
'facility' => $facilityWithAttributes['facility'],
self::FACILITY_ATTRIBUTES => $facilityAttributes,
];
}
}
return $facilitiesWithAttributes;
return $facilitiesWithAttributesRes;
}
}
......@@ -74,12 +74,7 @@ $perunShowOnServiceListAttr
= $conf->getString(PERUN_SHOW_ON_SERVICE_LIST_ATTR_NAME, null);
$showProtocol = $conf->getBoolean(PERUN_SHOW_PROTOCOL, true);
$rpcAdapter = new AdapterRpc();
$attributeDefinition = [];
$attributeDefinition[$perunProxyIdentifierAttr] = $proxyIdentifier;
$facilities
= $rpcAdapter->searchFacilitiesByAttributeValue($attributeDefinition);
$attrNames = [];
......@@ -105,16 +100,21 @@ $samlServices = [];
$oidcServices = [];
$samlTestServicesCount = 0;
$oidcTestServicesCount = 0;
foreach ($facilities as $facility) {
$attributes = $rpcAdapter->getFacilityAttributes($facility, $attrNames);
$facilitiesWithAttributes = $rpcAdapter->getFacilitiesByAttributeWithAttributes(
$perunProxyIdentifierAttr,
$proxyIdentifier,
$attrNames
);
foreach ($facilitiesWithAttributes as $facilityWithAttributes) {
$facilityAttributes = [];
foreach ($attributes as $attribute) {
foreach ($facilityWithAttributes['attributes'] as $attribute) {
$facilityAttributes[$attribute['name']] = $attribute;
}
if (!empty($facilityAttributes[$perunSaml2EntityIdAttr]['value'])) {
$samlServices[$facility->getId()] = [
'facility' => $facility,
$samlServices[$facilityWithAttributes['facility']['id']] = [
'facility' => $facilityWithAttributes['facility'],
'name' => $facilityAttributes[$perunServiceNameAttr],
'loginURL' => $facilityAttributes[$perunLoginURLAttr],
'showOnServiceList' => $facilityAttributes[$perunShowOnServiceListAttr],
......@@ -126,8 +126,8 @@ foreach ($facilities as $facility) {
}
if ($showOIDCServices && !empty($facilityAttributes[$perunOidcClientIdAttr]['value'])) {
$oidcServices[$facility->getId()] = [
'facility' => $facility,
$oidcServices[$facilityWithAttributes['facility']['id']] = [
'facility' => $facilityWithAttributes['facility'],
'name' => $facilityAttributes[$perunServiceNameAttr],
'loginURL' => $facilityAttributes[$perunLoginURLAttr],
'showOnServiceList' => $facilityAttributes[$perunShowOnServiceListAttr],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment