diff --git a/datamodels/2.x/itop-profiles-itil/src/UserProfilesEventListener.php b/datamodels/2.x/itop-profiles-itil/src/UserProfilesEventListener.php index 0f299788b1..6ce5b3f797 100644 --- a/datamodels/2.x/itop-profiles-itil/src/UserProfilesEventListener.php +++ b/datamodels/2.x/itop-profiles-itil/src/UserProfilesEventListener.php @@ -89,10 +89,17 @@ class UserProfilesEventListener implements iEventServiceSetup $sRepairmentProfile = \utils::GetConfig()->GetModuleSetting('itop-profiles-itil', 'poweruserportal-repair-profile', null); - if (is_null($sRepairmentProfile) && sizeof($aPortalDispatcherData) > 2){ + if (is_null($sRepairmentProfile) && count($aPortalDispatcherData) > 2){ //when there are further portals we dont want to force a specific portal by repairing the associated profiles to a user $this->bIsRepairmentEnabled = false; return; + } else{ + $aPortalNames = array_keys($aPortalDispatcherData); + sort($aPortalNames); + if ($aPortalNames !== ['backoffice', 'itop-portal']){ + $this->bIsRepairmentEnabled = false; + return; + } } if (is_null($sRepairmentProfile)){ diff --git a/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-profiles-itil/UserProfilesEventListenerTest.php b/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-profiles-itil/UserProfilesEventListenerTest.php index 6d020f6ded..0be313ef1e 100644 --- a/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-profiles-itil/UserProfilesEventListenerTest.php +++ b/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-profiles-itil/UserProfilesEventListenerTest.php @@ -377,13 +377,27 @@ class UserProfilesEventListenerTest extends ItopDataTestCase $this->assertTrue($oUserProfilesEventListener->IsRepairmentEnabled()); } - public function testUserProfilesEventListenerInit_furtherportals_norepairmentconfigured(){ - $aPortalDispatcherData = [ - 'itop-portal', - 'customer-portal', - 'backoffice' + public function CustomizedPortalsProvider(){ + return [ + 'console + customized portal' => [ + 'aPortalDispatcherData' => [ + 'customer-portal', + 'backoffice' + ]], + 'console + itop portal + customized portal' => [ + 'aPortalDispatcherData' => [ + 'itop-portal', + 'customer-portal', + 'backoffice' + ] + ], ]; + } + /** + * @dataProvider CustomizedPortalsProvider + */ + public function testUserProfilesEventListenerInit_furtherportals_norepairmentconfigured($aPortalDispatcherData){ $oUserProfilesEventListener = new UserProfilesEventListener(); $oUserProfilesEventListener->Init($aPortalDispatcherData);