Skip to content
This repository was archived by the owner on Sep 19, 2022. It is now read-only.

Commit 537f0c3

Browse files
BaranekDvyskocilpavel
authored andcommitted
Using of method getFacilityAttributesValues instead of several calls of getFacilityAttribute
1 parent 1f7029a commit 537f0c3

File tree

6 files changed

+74
-40
lines changed

6 files changed

+74
-40
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ All notable changes to this project will be documented in this file.
1616
#### Added
1717
- Added logging response time for each request into RPC/LDAP
1818

19+
#### Changed
20+
- If needed to get more facility attributes, method getFacilityAttributesValues() is used instead of several calls of getFacilityAttribute()
21+
1922
#### Fixed
2023
- Fix logging request params
2124

lib/Adapter.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,17 @@ abstract public function searchFacilitiesByAttributeValue($attribute);
140140
/**
141141
* @param Facility $facility
142142
* @param $attrNames array string $attrNames
143-
* @return array of attributes
143+
* @return array of attribute name -> attribute
144144
*/
145145
abstract public function getFacilityAttributes($facility, $attrNames);
146146

147+
/**
148+
* @param Facility $facility
149+
* @param $attrNames array string $attrNames
150+
* @return array of attribute name -> attribute value
151+
*/
152+
abstract public function getFacilityAttributesValues($facility, $attrNames);
153+
147154
/**
148155
* @param $extSourceName string name of ext source
149156
* @param $extSourceLogin string login

lib/AdapterLdap.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,12 @@ public function getFacilityAttributes($facility, $attrNames)
283283
// TODO: Implement getFacilityAttributes() method.
284284
}
285285

286+
public function getFacilityAttributesValues($facility, $attrNames)
287+
{
288+
throw new BadMethodCallException('NotImplementedException');
289+
// TODO: Implement getFacilityAttributesValues() method.
290+
}
291+
286292
public function getUserExtSource($extSourceName, $extSourceLogin)
287293
{
288294
// TODO: Implement getUserExtSource() method.

lib/AdapterRpc.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -433,17 +433,32 @@ public function getFacilityAttributes($facility, $attrNames)
433433
]);
434434
$attributes = [];
435435
foreach ($perunAttrs as $perunAttr) {
436-
array_push($attributes, [
436+
$perunAttrName = $perunAttr['namespace'] . ':' . $perunAttr['friendlyName'];
437+
$attributes[$perunAttrName] = [
437438
'id' => $perunAttr['id'],
438-
'name' => $perunAttr['namespace'] . ':' . $perunAttr['friendlyName'],
439+
'name' => $perunAttrName,
439440
'displayName' => $perunAttr['displayName'],
440441
'type' => $perunAttr['type'],
441442
'value' => $perunAttr['value']
442-
]);
443+
];
443444
}
444445
return $attributes;
445446
}
446447

448+
public function getFacilityAttributesValues($facility, $attrNames)
449+
{
450+
$perunAttrs = $this->connector->get('attributesManager', 'getAttributes', [
451+
'facility' => $facility->getId(),
452+
'attrNames' => $attrNames,
453+
]);
454+
$attributesValues = [];
455+
foreach ($perunAttrs as $perunAttr) {
456+
$perunAttrName = $perunAttr['namespace'] . ':' . $perunAttr['friendlyName'];
457+
$attributesValues[$perunAttrName] = $perunAttr['value'];
458+
}
459+
return $attributesValues;
460+
}
461+
447462
public function getUserExtSource($extSourceName, $extSourceLogin)
448463
{
449464
return $this->connector->get('usersManager', 'getUserExtSourceByExtLoginAndExtSourceName', [

lib/Auth/Process/ForceAup.php

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ public function process(&$request)
117117
);
118118
}
119119

120+
$attrNames = [
121+
$this->perunFacilityReqAupsAttr,
122+
$this->perunFacilityVoShortNames
123+
];
124+
120125
try {
121126
$facility = $this->adapter->getFacilityByEntityId($request['SPMetadata']['entityid']);
122127

@@ -127,21 +132,21 @@ public function process(&$request)
127132
$requiredAups = [];
128133
$voShortNames = [];
129134

130-
$facilityAups = $this->adapter->getFacilityAttribute($facility, $this->perunFacilityReqAupsAttr);
135+
$facilityAttrValues = $this->adapter->getFacilityAttributesValues(
136+
$facility,
137+
$attrNames
138+
);
131139

132-
if ($facilityAups !== null) {
133-
foreach ($facilityAups as $facilityAup) {
140+
if (isset($this->perunFacilityReqAupsAttr, $facilityAttrValues) &&
141+
is_array($facilityAttrValues[$this->perunFacilityReqAupsAttr])) {
142+
foreach ($facilityAttrValues[$this->perunFacilityReqAupsAttr] as $facilityAup) {
134143
array_push($requiredAups, $facilityAup);
135144
}
136145
}
137146

138-
$facilityVoShortNames = $this->adapter->getFacilityAttribute(
139-
$facility,
140-
$this->perunFacilityVoShortNames
141-
);
142-
143-
if ($facilityVoShortNames !== null) {
144-
foreach ($facilityVoShortNames as $facilityVoShortName) {
147+
if (isset($this->perunFacilityVoShortNames, $facilityAttrValues) &&
148+
is_array($facilityAttrValues[$this->perunFacilityVoShortNames])) {
149+
foreach ($facilityAttrValues[$this->perunFacilityVoShortNames] as $facilityVoShortName) {
145150
array_push($voShortNames, $facilityVoShortName);
146151
}
147152
}

lib/Auth/Process/PerunIdentity.php

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -429,51 +429,49 @@ public static function unauthorized($request)
429429
*/
430430
protected function getSPAttributes($spEntityID)
431431
{
432+
$attrNames = [
433+
$this->facilityCheckGroupMembershipAttr,
434+
$this->facilityVoShortNamesAttr,
435+
$this->facilityDynamicRegistrationAttr,
436+
$this->facilityRegisterUrlAttr,
437+
$this->facilityAllowRegistrationToGroupsAttr,
438+
];
439+
432440
try {
433441
$facility = $this->rpcAdapter->getFacilityByEntityId($spEntityID);
434442

435443
if ($facility === null) {
436444
return;
437445
}
438446

439-
$checkGroupMembership = $this->rpcAdapter->getFacilityAttribute(
447+
$facilityAttrValues = $this->rpcAdapter->getFacilityAttributesValues(
440448
$facility,
441-
$this->facilityCheckGroupMembershipAttr
449+
$attrNames
442450
);
443-
if ($checkGroupMembership !== null) {
444-
$this->checkGroupMembership = $checkGroupMembership;
451+
452+
if (array_key_exists($this->facilityCheckGroupMembershipAttr, $facilityAttrValues)) {
453+
$this->checkGroupMembership = $facilityAttrValues[$this->facilityCheckGroupMembershipAttr];
445454
}
446455

447-
$facilityVoShortNames = $this->rpcAdapter->getFacilityAttribute(
448-
$facility,
449-
$this->facilityVoShortNamesAttr
450-
);
451-
if (!empty($facilityVoShortNames)) {
452-
$this->facilityVoShortNames = $facilityVoShortNames;
456+
if (array_key_exists($this->facilityVoShortNamesAttr, $facilityAttrValues) &&
457+
!empty($facilityAttrValues[$this->facilityVoShortNamesAttr])) {
458+
$this->facilityVoShortNames = $facilityAttrValues[$this->facilityVoShortNamesAttr];
453459
}
454460

455-
$dynamicRegistration = $this->rpcAdapter->getFacilityAttribute(
456-
$facility,
457-
$this->facilityDynamicRegistrationAttr
458-
);
459-
if ($dynamicRegistration !== null) {
460-
$this->dynamicRegistration = $dynamicRegistration;
461+
if (array_key_exists($this->facilityDynamicRegistrationAttr, $facilityAttrValues)) {
462+
$this->dynamicRegistration = $facilityAttrValues[$this->facilityDynamicRegistrationAttr];
463+
}
464+
465+
if (array_key_exists($this->facilityRegisterUrlAttr, $facilityAttrValues)) {
466+
$this->registerUrl = $facilityAttrValues[$this->facilityRegisterUrlAttr];
461467
}
462468

463-
$this->registerUrl = $this->rpcAdapter->getFacilityAttribute(
464-
$facility,
465-
$this->facilityRegisterUrlAttr
466-
);
467469
if ($this->registerUrl === null) {
468470
$this->registerUrl = $this->defaultRegisterUrl;
469471
}
470472

471-
$allowRegistartionToGroups = $this->rpcAdapter->getFacilityAttribute(
472-
$facility,
473-
$this->facilityAllowRegistrationToGroupsAttr
474-
);
475-
if ($allowRegistartionToGroups !== null) {
476-
$this->allowRegistrationToGroups = $allowRegistartionToGroups;
473+
if (array_key_exists($this->facilityAllowRegistrationToGroupsAttr, $facilityAttrValues)) {
474+
$this->allowRegistrationToGroups = $facilityAttrValues[$this->facilityAllowRegistrationToGroupsAttr];
477475
}
478476
} catch (\Exception $ex) {
479477
Logger::warning('perun:PerunIdentity: ' . $ex);

0 commit comments

Comments
 (0)