From f50576d31d386b86802093ee3f705dec9d8ce1ce Mon Sep 17 00:00:00 2001 From: gloas <gloas@afi-sa.fr> Date: Thu, 17 May 2018 15:50:12 +0200 Subject: [PATCH] dev #72845 implode Cvs dashboard : add SSO link generation process --- library/Class/DigitalResource/Config.php | 5 +++ .../Helper/DigitalResource/Dashboard/SSO.php | 11 +++++- library/digital_resources/Cvs/Config.php | 34 +++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/library/Class/DigitalResource/Config.php b/library/Class/DigitalResource/Config.php index 74cd9358373..6ffa7a695a2 100644 --- a/library/Class/DigitalResource/Config.php +++ b/library/Class/DigitalResource/Config.php @@ -270,6 +270,11 @@ class Class_DigitalResource_Config extends Class_Entity { } + public function renderSSODiagOn($view) { + return ''; + } + + public function getTestUser() { $login = $this->getName() . '_test_user'; $user = ($user = Class_Users::findFirstBy(['login' => $login])) diff --git a/library/ZendAfi/View/Helper/DigitalResource/Dashboard/SSO.php b/library/ZendAfi/View/Helper/DigitalResource/Dashboard/SSO.php index 18af75f2fea..5286b9dd908 100644 --- a/library/ZendAfi/View/Helper/DigitalResource/Dashboard/SSO.php +++ b/library/ZendAfi/View/Helper/DigitalResource/Dashboard/SSO.php @@ -63,7 +63,11 @@ class ZendAfi_View_Helper_DigitalResource_Dashboard_SSO extends ZendAfi_View_Hel $html [] = $this->_tag('h4', $this->_('URL SSO générée par /modules/%s pour l\'utilisateur "%s"', $config->getSsoAction(), $user->getLogin())); - $html [] = $this->_tag('pre', $config->urlFor($user)); + + $html [] = ($diag = $config->renderSSODiagOn($this->view)) + ? $diag + : $this->_getSSOHtml($config, $user); + $html [] = $this->view->button((new Class_Entity) ->setUrl($this->view->url(['action' => 'try-sso'])) ->setText($this->_('Essayer le SSO avec l\'utilisateur "%s"', @@ -77,6 +81,11 @@ class ZendAfi_View_Helper_DigitalResource_Dashboard_SSO extends ZendAfi_View_Hel } + protected function _getSSOHtml($config, $user) { + return $this->_tag('pre', $config->urlFor($user)); + } + + protected function _getAlbumSSOUrlHtml($config, $user) { if(!$album = Class_Album::findFirstby(['type_doc_id' => $config->getDocType()])) return ''; diff --git a/library/digital_resources/Cvs/Config.php b/library/digital_resources/Cvs/Config.php index c56edd7e1ce..61c85e3dbc6 100644 --- a/library/digital_resources/Cvs/Config.php +++ b/library/digital_resources/Cvs/Config.php @@ -157,4 +157,38 @@ class Cvs_Config extends Class_DigitalResource_Config { return implode($html); } + + + public function renderSSODiagOn($view) { + $user = $this->getTestUser(); + + $service = new Cvs_Service; + $service->setUser($user); + + $xml = $service->getSiteAccessXML($user); + $encoded_xml = $service->getEncodedXML($xml); + $original_response = $service->httpPost($xml); + $response = htmlentities($original_response); + + $parser = new Cvs_Service_Parser_SiteAccess(); + $parser->parseXML($original_response); + + $url = ($url = $parser->getUrl()) ? $url : ''; + + $html = [$view->tag('p', $this->_('Pour générer le lien de connexion SSO, plusieurs étapes sont nécessaires.')), + $view->tag('h4', $this->_('La première étape consiste à générer le XML qui servirat à la génération du paramètre "xml"')), + $view->tag('pre', htmlentities($xml)), + $view->tag('h4', $this->_('L\'étape suivante est une requête HTTP POST vers l\'API_URL avec le paramètre "xml" encodé')), + $view->tag('p', $this->_('API URL:')), + $view->tag('pre', $this->getAdminVar('API_URL')), + $view->tag('p', $this->_('XML encodé:')), + $view->tag('pre', $encoded_xml), + $view->tag('p', $this->_('Réponse reçue à la demande d\'accès au site :')), + $view->tag('pre', $response), + $view->tag('h4', $this->_('La dernière étape parcourt la réponse afin de récupérer l\'url de SSO')), + $view->tag('pre', $url) + ]; + + return implode($html); + } } \ No newline at end of file -- GitLab