Skip to content
Snippets Groups Projects
Commit 2fc04d9e authored by Alex Arnaud's avatar Alex Arnaud
Browse files

Merge branch 'hotline#180601_Add_site_access_to_Cvs2' into 'master'

[RTko] hotline#180601 : add site access to Cvs2 connector

See merge request !4756
parents 77002129 567dd529
Branches
Tags
1 merge request!4756[RTko] hotline#180601 : add site access to Cvs2 connector
Pipeline #23802 passed with stage
in 26 minutes and 55 seconds
hotline#180601 : Ajoute la redirection Cvs2 en accés site
\ No newline at end of file
......@@ -105,7 +105,7 @@ class Cvs2_Config extends Class_DigitalResource_Config {
public function getSsoUrl(Class_Users $user) : string {
return $this->getAdminVar('CATALOG_URL');
return (new Cvs2_Service($this))->getSiteAccessFor($user);
}
......@@ -126,7 +126,7 @@ class Cvs2_Config extends Class_DigitalResource_Config {
if ($this->_isAccesDirectFor($album))
return (new Cvs2_AccesDirect($album))->url();
return $this->getAdminVar('CATALOG_URL') . ($album ? '/album/' . $album->getIdOrigine() : '');
return $this->getSsoUrl($user) . ($album ? '/album/' . $album->getIdOrigine() : '');
}
......
......@@ -281,4 +281,42 @@ class Cvs2_Service extends Class_DigitalResource_Service {
return $harvestedIds;
}
public function getSiteAccessFor($user) {
$response = $this->_callSiteAccess($user);
$parser = new Cvs_Service_Parser_SiteAccess;
$parser->parseXML($response);
return $parser->isSuccess() ? $this->getConfig()->getAdminVar('CATALOG_URL') : '';
}
protected function _callSiteAccess($user) {
$xml = $this->getSiteAccessXML($user);
return $this->httpPost($xml);
}
public function getSiteAccessXML($user) {
$this->_user = $user;
$params = ['querystring' => '',
'affichage' => 'complet'];
$closure = function($xml, $params) {
$this->_appendSiteAccess($xml, $params);
};
return $this->_getXML('acces_site', $params, $closure);
}
protected function _appendSiteAccess($xml, $params) {
$body = $xml->getElementsByTagName('body')->item(0);
$this->_cdataIn($xml, $body, 'querystring', urldecode($params['querystring']));
$body->appendChild($xml->createElement('affichage', $params['affichage']));
}
}
......@@ -39,6 +39,7 @@ abstract class Cvs2ActivatedTestCase extends AbstractControllerTestCase {
Class_AdminVar::set('Cvs2_SOURCEPASSWORD', '22227');
Class_AdminVar::set('Cvs2_API_URL', 'http://cvs.api.org');
Class_AdminVar::set('Cvs2_LOGINTEST', 'cvs_login_test');
Class_AdminVar::set('Cvs2_CATALOG_URL', 'http://cvs-site.com');
Cvs2_Service::setTimeSource((new TimeSourceForTest)->setTime(1369640315));
......@@ -105,6 +106,42 @@ abstract class Cvs2ActivatedTestCase extends AbstractControllerTestCase {
class Cvs2ActivatedAccessSiteSsoTestCase extends Cvs2ActivatedTestCase {
public function setUp() {
parent::setUp();
ZendAfi_Auth::getInstance()->logUser($this->_user);
$web_client = $this->mock()
->whenCalled('postData')
->answers('<?xml version="1.0" encoding="UTF-8"?>
<response>
<success>1</success>
<key>f97cf6c572af9018f7f018a2220bce0d</key>
<time>1526288804</time>
<action>acces_site</action>
<data>
<url>https://rayonnages.mediatheques.fr/?ln=&amp;con=090021b6dae3bf74759e4e0e47f754af&amp;if=0</url>
<token>090021b6dae3bf74759e4e0e47f754af</token>
</data>
</response>');
Class_WebService_Abstract::setHttpClient($web_client);
}
/** @test */
public function shouldRedirectToCvs2() {
$this->dispatch('/modules/cvs2/123', true);
$this->assertXPathContentContains('//script',
'document.location.href="http://cvs-site.com',
$this->_response->getBody());
}
}
abstract class Cvs2ActivatedAdminLoggedTestCase extends Cvs2ActivatedTestCase {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment