diff --git a/VERSIONS_HOTLINE/177091 b/VERSIONS_HOTLINE/177091 new file mode 100644 index 0000000000000000000000000000000000000000..427949180deb6804780713e2ca2b77382822a370 --- /dev/null +++ b/VERSIONS_HOTLINE/177091 @@ -0,0 +1 @@ + - correctif #177091 : Administration Utilisateurs : Les abonnés portails peuvent désormais avoir un abonnement valide pour accéder aux ressources numériques. \ No newline at end of file diff --git a/library/Class/SearchCriteria.php b/library/Class/SearchCriteria.php index 52d0b398285ed33e49381e40b23cfdfe1f675b0c..85e1a7fc51924d2c4906db5c5f9f41f2f9437924 100644 --- a/library/Class/SearchCriteria.php +++ b/library/Class/SearchCriteria.php @@ -200,10 +200,7 @@ abstract class Class_SearchCriteria { public function modelMatch($model) :bool { return (new Storm_Collection($this->_criteria)) - ->detect(function($each) use($model) - { - return $each->shouldFilter($this) && !$each->modelMatch($model); - }) + ->detect(fn($each) => $each->shouldFilter($this) && !$each->modelMatch($model)) ? false : true; } diff --git a/library/Class/User/ILSSubscription.php b/library/Class/User/ILSSubscription.php index f3f72a2068eb0229bd339b89ff62ffa86f064c14..f23b4b10f2e19dc362d6fbef0bc9b640ba2cc2b2 100644 --- a/library/Class/User/ILSSubscription.php +++ b/library/Class/User/ILSSubscription.php @@ -102,7 +102,7 @@ class Class_User_ILSSubscription { public function isValid() :bool { - if (!$this->_user->isAbonne()) + if ( ! $this->_user->isAbonne()) return false; return !$this->isExpired() && !$this->isBlocked(); diff --git a/library/Class/User/SearchCriteria.php b/library/Class/User/SearchCriteria.php index 095b6c3b193f782323aede55df9725bc4185eb74..7c0b01de92e4da6f9e6ef672dd1e11cb38d57f9f 100644 --- a/library/Class/User/SearchCriteria.php +++ b/library/Class/User/SearchCriteria.php @@ -95,7 +95,9 @@ class Class_User_SearchCriteriaValidSubscription public function modelMatch($model) :bool { - return $model->isAbonnementValid(); + return ($date = $model->getDateFin()) + ? ($model->getCurrentDate() <= $date) + : false; } diff --git a/library/digital_resources/Lekiosk/tests/LekioskTest.php b/library/digital_resources/Lekiosk/tests/LekioskTest.php index 4177e5ad6e38eb80d2ef49a7d17938ae8ba57f3c..074e460698f5825627aa5a47154d898bb74594bc 100644 --- a/library/digital_resources/Lekiosk/tests/LekioskTest.php +++ b/library/digital_resources/Lekiosk/tests/LekioskTest.php @@ -236,6 +236,34 @@ class LekioskModulesControllerTest extends AbstractControllerTestCase { $this->dispatch('/opac/modules/lekiosk'); $this->assertFlashMessengerContentContains('Votre abonnement ne permet pas'); } + + + /** @test */ + public function dynamicGroupWithRightsShouldAccessLekiosk() { + $group = $this->fixture(Class_UserGroup::class, + ['id' => 1, + 'filters' => json_encode(['search_role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE, + 'search_valid_subscription' => 1])]); + + $group->beDynamic()->assertSave(); + + $lekiosk_permission_id = Lekiosk_Config::getInstance()->getPermission()->getId(); + + $this->fixture(Class_UserGroup_Permission::class, + ['id' => 1, + 'id_group' => 1, + 'id_permission' => $lekiosk_permission_id, + 'id_model' => null, + 'model_class' => null + ]); + + Class_Users::getIdentity() + ->bePortalBorrowerForDays(30); + + $this->dispatch('/opac/modules/lekiosk'); + $this->assertContains('https://pros.lekiosk.com/login/accesshash', + $this->_response->getBody()); + } }