Skip to content
Snippets Groups Projects
Commit fabf6312 authored by Pavel Břoušek's avatar Pavel Břoušek
Browse files

Merge branch 'getFacilityByAttributeWithAttributes' into 'main'

refactor: use getFacilitiesByAttributeWithAttributes

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