From eff5cd1c74a6d51bdcc6d8398714c1702443d042 Mon Sep 17 00:00:00 2001
From: Patrick Barroca <pbarroca@afi-sa.fr>
Date: Fri, 12 Jul 2019 16:08:05 +0200
Subject: [PATCH] hotline #94842 : update philarmoniedeparis.fr SSO

---
 VERSIONS_HOTLINE/94842                          |  1 +
 library/Class/AdminVar/CiteDeLaMusique.php      | 17 ++++++++++++++++-
 .../Systeme/ModulesMenu/CiteDeLaMusique.php     |  3 +--
 .../View/Helper/Album/CiteDeLaMusique.php       | 13 ++++---------
 .../CiteDeLaMusique/CiteDeLaMusiqueTest.php     |  4 ++--
 5 files changed, 24 insertions(+), 14 deletions(-)
 create mode 100644 VERSIONS_HOTLINE/94842

diff --git a/VERSIONS_HOTLINE/94842 b/VERSIONS_HOTLINE/94842
new file mode 100644
index 00000000000..c6d6307a002
--- /dev/null
+++ b/VERSIONS_HOTLINE/94842
@@ -0,0 +1 @@
+ - ticket #94842 : Connecteur Cité de la musique : Maintenance SSO
\ No newline at end of file
diff --git a/library/Class/AdminVar/CiteDeLaMusique.php b/library/Class/AdminVar/CiteDeLaMusique.php
index e4366408048..fb0678ff578 100644
--- a/library/Class/AdminVar/CiteDeLaMusique.php
+++ b/library/Class/AdminVar/CiteDeLaMusique.php
@@ -21,6 +21,8 @@
 
 
 class Class_AdminVar_CiteDeLaMusique {
+  const SSO_BASE_URL = 'https://admin-pad.philharmoniedeparis.fr/logon/';
+
   /**
    * @return bool
    */
@@ -40,5 +42,18 @@ class Class_AdminVar_CiteDeLaMusique {
   public function getSets() {
     return array_filter(explode(';', Class_AdminVar::get('CITEDELAMUSIQUE_SETS')));
   }
+
+
+  public function getSsoUrl() {
+    return $this->isEnabled()
+      ? (static::SSO_BASE_URL . $this->getLibraryId())
+      : '';
+  }
+
+
+  public function getAlbumSsoUrl($album) {
+    return $this->isEnabled()
+      ? ($this->getSsoUrl() . '?' . http_build_query(['backUrl' => $album->getExternalUri()]))
+      : '';
+  }
 }
-?>
\ No newline at end of file
diff --git a/library/Class/Systeme/ModulesMenu/CiteDeLaMusique.php b/library/Class/Systeme/ModulesMenu/CiteDeLaMusique.php
index 03f10258298..648573d5585 100644
--- a/library/Class/Systeme/ModulesMenu/CiteDeLaMusique.php
+++ b/library/Class/Systeme/ModulesMenu/CiteDeLaMusique.php
@@ -20,7 +20,6 @@
  */
 
 class Class_Systeme_ModulesMenu_CiteDeLaMusique extends Class_Systeme_ModulesMenu_SSOAbstract {
-
   protected
     $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES,
     $_type_module = 'CITE_DE_LA_MUSIQUE',
@@ -46,7 +45,7 @@ class Class_Systeme_ModulesMenu_CiteDeLaMusique extends Class_Systeme_ModulesMen
     if (!$user->hasRightAccessCiteDeLaMusique())
       return '';
 
-    return 'https://media.citedelamusique.fr/medias/logon/' . $cite_musique->getLibraryId();
+    return $cite_musique->getSsoUrl();
   }
 
 
diff --git a/library/ZendAfi/View/Helper/Album/CiteDeLaMusique.php b/library/ZendAfi/View/Helper/Album/CiteDeLaMusique.php
index 27849b79e77..8f606468756 100644
--- a/library/ZendAfi/View/Helper/Album/CiteDeLaMusique.php
+++ b/library/ZendAfi/View/Helper/Album/CiteDeLaMusique.php
@@ -27,16 +27,12 @@ class ZendAfi_View_Helper_Album_CiteDeLaMusique extends ZendAfi_View_Helper_TagR
       return '';
 
     if (!$this->canAccessRessourceNumerique())
-      return $this->view->tag('p',
-                              $this->view->_('Vous devez être connecté sous un compte avec abonnement valide pour pouvoir accéder à la ressource numérique'));
+      return $this->_tag('p',
+                         $this->_('Vous devez être connecté sous un compte avec abonnement valide pour pouvoir accéder à la ressource numérique'));
 
 
-    $url = 'http://media.citedelamusique.fr/extranet/autologon/autologon.ashx?'
-      . http_build_query(['bib' => $cite_musique->getLibraryId(),
-                          'backUrl' => $album->getExternalUri()]);
-
-    return $this->view->tagAnchor($url,
-                                  $this->view->_('Accéder à la ressource numérique'));
+    return $this->view->tagAnchor($cite_musique->getAlbumSsoUrl($album),
+                                  $this->_('Accéder à la ressource numérique'));
   }
 
 
@@ -44,4 +40,3 @@ class ZendAfi_View_Helper_Album_CiteDeLaMusique extends ZendAfi_View_Helper_TagR
     return $user->hasRightAccessCiteDeLaMusique();
   }
 }
-?>
\ No newline at end of file
diff --git a/tests/scenarios/CiteDeLaMusique/CiteDeLaMusiqueTest.php b/tests/scenarios/CiteDeLaMusique/CiteDeLaMusiqueTest.php
index 98eee79db71..8b1ef762286 100644
--- a/tests/scenarios/CiteDeLaMusique/CiteDeLaMusiqueTest.php
+++ b/tests/scenarios/CiteDeLaMusique/CiteDeLaMusiqueTest.php
@@ -145,7 +145,7 @@ class CiteDeLaMusiqueModulesControllerTest extends AbstractControllerTestCase {
   public function citeDeLaMusiqueActionShouldRedirectToCiteDeLaMusiqueLogon() {
     $this->dispatch('/modules/cite-de-la-musique', true);
     $this->assertXPathContentContains('//script',
-                                      'document.location.href="https://media.citedelamusique.fr/medias/logon/34-mylib"');
+                                      'document.location.href="https://admin-pad.philharmoniedeparis.fr/logon/34-mylib"');
   }
 
 
@@ -197,7 +197,7 @@ class CiteDeLaMusiqueRenderAlbumTest extends ViewHelperTestCase {
   public function htmlShouldContainsSsoLinkToCiteDeLaMusiqueWhenActivated() {
     CiteDeLaMusiqueFixtures::activate();
 
-    $expected_url = 'http://media.citedelamusique.fr/extranet/autologon/autologon.ashx?bib=34-mylib&backUrl=http%3A%2F%2Fmedia.citedelamusique.fr%2Fmedias%2Fdoc%2FEXTRANET%2FCIMU%2F1038311%2FDETAIL';
+    $expected_url = 'https://admin-pad.philharmoniedeparis.fr/logon/34-mylib?backUrl=http%3A%2F%2Fmedia.citedelamusique.fr%2Fmedias%2Fdoc%2FEXTRANET%2FCIMU%2F1038311%2FDETAIL';
 
     $this->assertXPathContentContains($this->_renderAlbum(),
                                       '//a[@href="' . $expected_url . '"]',
-- 
GitLab