diff --git a/VERSIONS_HOTLINE/59488 b/VERSIONS_HOTLINE/59488
new file mode 100644
index 0000000000000000000000000000000000000000..f376d85111c92120fda80e188b8c81f9959e0ca0
--- /dev/null
+++ b/VERSIONS_HOTLINE/59488
@@ -0,0 +1 @@
+ - ticket #59488 : Nanook : correction de l'authentification des abonnés après un chamgement de site dans le SIGB
\ No newline at end of file
diff --git a/library/Class/User/DoubleFinder.php b/library/Class/User/DoubleFinder.php
index 0cb72a202b02b108126246d22d85093c294f7b13..61631eee6adb793993af0facdeb95e6ee487a5f9 100644
--- a/library/Class/User/DoubleFinder.php
+++ b/library/Class/User/DoubleFinder.php
@@ -21,6 +21,26 @@
 
 
 class Class_User_DoubleFinder extends Class_Entity {
+  public function __construct($patron) {
+    $this->setStrategy((Class_IntBib::isSingleNanook())
+                       ? new Class_User_DoubleFinder_NanookStrategy($patron)
+                       : new Class_User_DoubleFinder_DefaultStrategy($patron));
+  }
+
+
+  public function find() {
+    return $this->getStrategy()->find();
+  }
+
+
+  public function getDouble() {
+    return $this->getStrategy()->getDouble();
+  }
+}
+
+
+
+class Class_User_DoubleFinder_DefaultStrategy extends Class_Entity {
   public function __construct($patron) {
     $this->setPatron($patron);
   }
@@ -44,19 +64,22 @@ class Class_User_DoubleFinder extends Class_Entity {
     if (!$id_int_bib = $this->getPatronIdIntBib())
       return false;
 
-    foreach(['_matchByLoginAndOrder',
-             '_matchByLoginAndIdSigb',
-             '_matchByLoginAndLibrary',
-             '_matchByIdSigb']
-            as $method) {
+    foreach($this->_matchers() as $method)
       if (call_user_func([$this, $method]))
         return true;
-    }
 
     return false;
   }
 
 
+  protected function _matchers() {
+    return ['_matchByLoginAndOrder',
+            '_matchByLoginAndIdSigb',
+            '_matchByLoginAndLibrary',
+            '_matchByIdSigb'];
+  }
+
+
   protected function _matchByLoginAndOrder() {
     if (!$ordreabon = $this->getPatronOrdreabon())
       return false;
@@ -87,8 +110,7 @@ class Class_User_DoubleFinder extends Class_Entity {
 
 
   protected function _matchByParams($params) {
-    $params = array_merge(['id_int_bib' => $this->getPatronIdIntBib()],
-                          $params);
+    $params = $this->_restrictToIntegration($params);
 
     if (!$user = Class_Users::findFirstBy($params))
       return false;
@@ -96,4 +118,51 @@ class Class_User_DoubleFinder extends Class_Entity {
     $this->setDouble($user);
     return true;
   }
+
+
+  protected function _restrictToIntegration($params) {
+    return array_merge(['id_int_bib' => $this->getPatronIdIntBib()],
+                       $params);
+  }
 }
+
+
+
+class Class_User_DoubleFinder_NanookStrategy
+  extends Class_User_DoubleFinder_DefaultStrategy {
+
+  protected function _matchers() {
+    return ['_matchByLoginAndOrderAndLibrary',
+            '_matchByLoginAndIdSigbAndLibrary',
+            '_matchByLoginAndOrder',
+            '_matchByLoginAndIdSigb',
+            '_matchByLoginAndLibrary',
+            '_matchByIdSigb'];
+  }
+
+
+  protected function _matchByLoginAndOrderAndLibrary() {
+    if (!$ordreabon = $this->getPatronOrdreabon())
+      return false;
+
+    return $this->_matchRestrictedToSite(['login' => $this->getPatronLogin(),
+                                          'ordreabon' => $ordreabon]);
+  }
+
+
+  protected function _matchByLoginAndIdSigbAndIdSite() {
+    return $this->_matchRestrictedToSite(['login' => $this->getPatronLogin(),
+                                          'id_sigb' => $this->getPatronIdSigb()]);
+  }
+
+
+  protected function _matchRestrictedToSite($params) {
+    $params['id_site'] = $this->getPatronIdSite();
+    return $this->_matchByParams($params);
+  }
+
+
+  protected function _restrictToIntegration($params) {
+    return $params;
+  }
+}
\ No newline at end of file
diff --git a/tests/library/Class/UserDoubleFinderTest.php b/tests/library/Class/UserDoubleFinderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..4309d8eabe522df6561c0a25c210fe98e814aba6
--- /dev/null
+++ b/tests/library/Class/UserDoubleFinderTest.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class UserDoubleFinderWithSingleNanookTest extends ModelTestCase {
+  protected
+    $_storm_default_to_volatile = true,
+    $_result,
+    $_double;
+
+  public function setUp() {
+    parent::setUp();
+
+    $library_commons = ['mail' => null,
+                        'qualite' => 5,
+                        'dernier_ajout' => '0000-00-00',
+                        'ecart_ajouts' => 0,
+                        'date_mail' => '',
+                        'sigb' => 13,
+                        'planif_mode' => 'r',
+                        'planif_jours' => '1111111',
+                        'planif_fois' => 0,
+                        'planif_par' => null,
+                        'comm_sigb' => 7,
+                        'comm_params' => 'a:1:{s:11:"url_serveur";s:53:"http://nanookws.afi-sa.net/afi_NanookWs/ilsdi/meylan/";}',
+                        'pas_exporter' => 0];
+
+    $this->fixture('Class_IntBib',
+                   array_merge($library_commons,
+                               ['id' => 7,
+                                'nom' => 'Magasin',
+                                'nom_court' => 'Magasin']));
+
+    $this->fixture('Class_IntBib',
+                   array_merge($library_commons,
+                               ['id' => 2,
+                                'nom' => 'Béalières',
+                                'nom_court' => 'meylan']));
+
+    $this->fixture('Class_IntBib',
+                   array_merge($library_commons,
+                               ['id' => 3,
+                                'nom' => 'Grand-Pré',
+                                'nom_court' => 'Grand-Pré']));
+
+
+    $user_commons = ['NOM' => 'testing',
+                     'PRENOM' => 'test',
+                     'NAISSANCE' => '1984-04-18',
+                     'LOGIN' => '0046158',
+                     'PASSWORD' => '1984',
+                     'ROLE' => 'abonne_sigb',
+                     'ROLE_LEVEL' => 2,
+                     'IDABON' => '0046158',
+                     'ORDREABON' => 1,
+                     'pseudo' => '',
+                     'DATE_DEBUT' => '',
+                     'ID_SIGB' => '6308',
+                     'CIVILITE' => 0,
+                     'ID_PANIER_COURANT' => 0];
+
+    $this->fixture('Class_Users',
+                   array_merge($user_commons,
+                               ['id' => 41632,
+                                'ID_SITE' => 2,
+                                'STATUT' => 1,
+                                'DATE_FIN' => '2016-11-24',
+                                'DATE_MAJ' => '2016-11-28',
+                                'SETTINGS' => 'a:1:{s:11:"library_ids";i:60;}',
+                                'id_int_bib' => 2]));
+
+    $this->fixture('Class_Users',
+                   array_merge($user_commons,
+                               ['id' => 45012,
+                                'ID_SITE' => 3,
+                                'STATUT' => 0,
+                                'DATE_FIN' => '2017-11-29',
+                                'DATE_MAJ' => '2017-04-18',
+                                'SETTINGS' => 'a:1:{s:11:"library_ids";s:0:"";}',
+                                'id_int_bib' => 3]));
+
+
+    $patron = (new Class_Entity())
+      ->setLogin('0046158')
+      ->setPassword('1984')
+      ->setIdabon('0046158')
+      ->setOrdreabon(1)
+      ->setIdSigb('6308')
+      ->setIdSite(3)
+      ->setIdIntBib(7);
+
+    $finder = new Class_User_DoubleFinder($patron);
+    if ($this->_result = $finder->find())
+      $this->_double = $finder->getDouble();
+  }
+
+
+  /** @test */
+  public function shouldFindDouble() {
+    $this->assertTrue($this->_result);
+  }
+
+
+  /** @test */
+  public function doubleLibraryShouldBe3() {
+    $this->assertEquals(3, $this->_double->getIdSite());
+  }
+}