diff --git a/cosmogramme/php/classes/classe_abonne.php b/cosmogramme/php/classes/classe_abonne.php index bbd292c9ee5bd4f40b1ff96a33945aa5051706c1..4ed646651f6ecc0c6abecb2e76361eb2bf3ede3f 100644 --- a/cosmogramme/php/classes/classe_abonne.php +++ b/cosmogramme/php/classes/classe_abonne.php @@ -157,18 +157,9 @@ class abonne protected function findMatchingUserInDB($data) { - if (isset($data['ID_SIGB']) - && ($data['ID_SIGB']) - && ($user = Class_Users::findFirstBy(['id_sigb' => $data['ID_SIGB']]))) - return $user; - - $params_existing_user = ['login'=>$data["LOGIN"], - 'id_site'=>$data['ID_SITE']]; - - if (isset($data['ORDREABON'])) - $params_existing_user['ordreabon'] = $data['ORDREABON']; - - return Class_Users::findFirstBy($params_existing_user); + $user = Class_Users::newInstance($data); + $bib = Class_IntBib::find($data['ID_SITE']); + return Class_Users::findMatchingPatron($user,$bib); } diff --git a/library/Class/Users.php b/library/Class/Users.php index f947c7eb02d5d5204ebf880bdafcc3f0b9c5633c..a17aa1ec544b53a44cbef69ace0cce38af780925 100644 --- a/library/Class/Users.php +++ b/library/Class/Users.php @@ -42,6 +42,33 @@ class UsersLoader extends Storm_Model_Loader { } + public function findMatchingPatron($patron,$bib) { + if (!$bib || !$patron) + return null; + + if ($patron->getOrdreabon() && + $user = Class_Users::findFirstBy(['login' => $patron->getLogin(), + 'ordreabon' => $patron->getOrdreabon(), + 'id_site' => $bib->getIdBib()])) + return $user; + + if ($user = Class_Users::findFirstBy(['login' => $patron->getLogin(), + 'id_sigb' => $patron->getIdSigb(), + 'id_site' => $bib->getIdBib()])) + return $user; + + if ($user = Class_Users::findFirstBy(['login' => $patron->getLogin(), + 'id_site' => $bib->getIdBib()])) + return $user; + + if ($patron->getIdSigb() && + $user = Class_Users::findFirstBy(['id_site' => $bib->getIdBib(), + 'id_sigb' => $patron->getIdSigb()])) + return $user; + + return null; + + } public function findAllLike($search, $by_right = null, $limit = 500) { $sql_template = 'select bib_admin_users.* from bib_admin_users '; diff --git a/library/ZendAfi/Auth/Adapter/CommSigb.php b/library/ZendAfi/Auth/Adapter/CommSigb.php index d3d36114c9a5e13f7b07c297a53a05b4caf84ac0..d05f5ee0c1e5f94e1a3ae951fb07e484dac19965 100644 --- a/library/ZendAfi/Auth/Adapter/CommSigb.php +++ b/library/ZendAfi/Auth/Adapter/CommSigb.php @@ -75,18 +75,8 @@ class ZendAfi_Auth_Adapter_CommSigb implements Zend_Auth_Adapter_Interface { if (!$this->_bib) return $new_user; - - if ($user = Class_Users::findFirstBy(['login' => $user_from_sigb->getLogin(), - 'id_sigb' => $user_from_sigb->getIdSigb(), - 'id_site' => $this->_bib->getIdBib()])) - return $user; - - if ($user = Class_Users::findFirstBy(['login' => $user_from_sigb->getLogin(), - 'id_site' => $this->_bib->getIdBib()])) - return $user; - - if ($user = Class_Users::findFirstBy(['id_site' => $this->_bib->getIdBib(), - 'id_sigb' => $user_from_sigb->getIdSigb()])) + xdebug_break(); + if ($user = Class_Users::findMatchingPatron($user_from_sigb, $this->_bib)) return $user; return $new_user; @@ -132,7 +122,6 @@ class ZendAfi_Auth_Adapter_CommSigb implements Zend_Auth_Adapter_Interface { public function authResult($user) { $result = new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $this->_identity); - if(!$user) return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND, $this->_identity); diff --git a/tests/library/ZendAfi/Auth/Adapter/AuthCommSigbTest.php b/tests/library/ZendAfi/Auth/Adapter/AuthCommSigbTest.php index 561c2cf116b75050a0d7cae7a93a6d1d98c6eb33..b498932b0eb43f6bb32463b8c77f5d1f7f13b2b9 100644 --- a/tests/library/ZendAfi/Auth/Adapter/AuthCommSigbTest.php +++ b/tests/library/ZendAfi/Auth/Adapter/AuthCommSigbTest.php @@ -315,7 +315,7 @@ class AuthCommSigbSuccessfullAuthenticationWithExistingFamilleUserTest extends A /** @test */ public function zorkGirlShouldBeAbonneSIGB() { - $this->assertTrue($this->_zork_girl->isAbonne()); + $this->assertTrue(Class_Users::find(85)->isAbonne()); } }