From f9629ecddc55b6881a2861a959bd85c9fda4cace Mon Sep 17 00:00:00 2001 From: Patrick Barroca <pbarroca@sandbox.pergame.net> Date: Tue, 26 Jan 2016 09:36:44 +0100 Subject: [PATCH] rel #37107: direct redirection to resource after login when SSO support it --- VERSIONS_HOTLINE/37107 | 1 + .../opac/controllers/ModulesController.php | 89 +++++++------------ .../Class/Systeme/ModulesMenu/SSOAbstract.php | 7 +- .../ModulesControllerKidilanguesTest.php | 4 +- .../ModulesControllerMyCowTest.php | 4 +- .../controllers/ModulesControllerTest.php | 2 +- 6 files changed, 42 insertions(+), 65 deletions(-) create mode 100644 VERSIONS_HOTLINE/37107 diff --git a/VERSIONS_HOTLINE/37107 b/VERSIONS_HOTLINE/37107 new file mode 100644 index 00000000000..27f968e097a --- /dev/null +++ b/VERSIONS_HOTLINE/37107 @@ -0,0 +1 @@ + - ticket #37107 : Ressources numérique : lorsque la ressource le permet, redirection directe à la ressource en cas de login réussi \ No newline at end of file diff --git a/application/modules/opac/controllers/ModulesController.php b/application/modules/opac/controllers/ModulesController.php index 4652534dd02..6f0146b0764 100644 --- a/application/modules/opac/controllers/ModulesController.php +++ b/application/modules/opac/controllers/ModulesController.php @@ -20,13 +20,26 @@ */ class ModulesController extends Zend_Controller_Action { - public function cvsAction() { - $cvs = new Class_Systeme_ModulesMenu_CVS(); + public function preDispatch() { + $mapping = ['vodeclic' => 'Vodeclic', + 'toutapprendre' => 'ToutApprendre', + 'lekiosk' => 'LeKiosk', + 'lesocial' => 'LeSocial', + 'mycow' => 'MyCow', + 'planetnemo' => 'PlanetNemo', + 'kidilangues' => 'Kidilangues', + 'orthodidacte' => 'Orthodidacte']; + + $action = $this->_request->getActionName(); + if (array_key_exists($action, $mapping)) + $this->_forward('simple', null, null, ['type' => $mapping[$action]]); + } - $cvs->setDocId($this->_getParam('docid')) - ->afterLoginRedirectTo($this->_request->getServer('HTTP_REFERER')); - return $this->checkNotifyMessage($cvs, $cvs->getDynamiqueUrl()); + public function cvsAction() { + $cvs = new Class_Systeme_ModulesMenu_CVS(); + $cvs->setDocId($this->_getParam('docid')); + $this->simple($cvs); } @@ -54,62 +67,27 @@ class ModulesController extends Zend_Controller_Action { } - public function vodeclicAction() { - $vodeclic = new Class_Systeme_ModulesMenu_Vodeclic(); - $vodeclic->afterLoginRedirectTo($this->_request->getServer('HTTP_REFERER')); - $this->checkNotifyMessage($vodeclic, $vodeclic->getDynamiqueUrl()); - } - - - public function toutapprendreAction() { - $tout_apprendre = new Class_Systeme_ModulesMenu_ToutApprendre(); - $tout_apprendre->afterLoginRedirectTo($this->_request->getServer('HTTP_REFERER')); - $this->checkNotifyMessage($tout_apprendre, - $tout_apprendre->getDynamiqueUrl()); - } - - - public function lekioskAction() { - $redirect = Class_AdminVar::isLeKioskCas() - ? Class_Url::absolute($this->view->url()) - : $this->_request->getServer('HTTP_REFERER') ; - - $lekiosk = new Class_Systeme_ModulesMenu_LeKiosk(); - $lekiosk->afterLoginRedirectTo($redirect); - $this->checkNotifyMessage($lekiosk, $lekiosk->getDynamiqueUrl()); - } - - public function lesocialAction() { - $lesocial = new Class_Systeme_ModulesMenu_LeSocial(); - $lesocial->afterLoginRedirectTo($this->_request->getServer('HTTP_REFERER')); - $this->checkNotifyMessage($lesocial, $lesocial->getDynamiqueUrl()); - } - - - public function mycowAction() { - $mycow = new Class_Systeme_ModulesMenu_MyCow(); - $mycow->afterLoginRedirectTo($this->_request->getServer('HTTP_REFERER')); - $this->checkNotifyMessage($mycow, $mycow->getDynamiqueUrl()); - } - - public function mycowSsoAction() { $this->view->eid = $this->_request->getParam('eid', 0); $this->view->uid = $this->_request->getParam('uid', 0); } - public function planetnemoAction() { - $planetnemo = new Class_Systeme_ModulesMenu_PlanetNemo(); - $planetnemo->afterLoginRedirectTo($this->_request->getServer('HTTP_REFERER')); - $this->checkNotifyMessage($planetnemo, $planetnemo->getDynamiqueUrl()); + public function simpleAction() { + $class_name = 'Class_Systeme_ModulesMenu_' . $this->_getParam('type', 'Null'); + $this->simple(new $class_name()); } - public function kidilanguesAction() { - $kidilangues = new Class_Systeme_ModulesMenu_Kidilangues(); - $kidilangues->afterLoginRedirectTo($this->_request->getServer('HTTP_REFERER')); - $this->checkNotifyMessage($kidilangues, $kidilangues->getDynamiqueUrl()); + protected function simple($link) { + $this->willRedirectToMe($link) + ->checkNotifyMessage($link, $link->getDynamiqueUrl()); + } + + + protected function willRedirectToMe($link) { + $link->afterLoginRedirectTo(Class_Url::absolute($this->view->url())); + return $this; } @@ -124,11 +102,4 @@ class ModulesController extends Zend_Controller_Action { $this->getResponse()->setHeader('Content-Type', 'text/html;charset=utf-8'); $this->getResponse()->setBody('<script>window.location="'.$url.'";</script>'); } - - - public function orthodidacteAction() { - $orthodidacte = new Class_Systeme_ModulesMenu_Orthodidacte(); - $orthodidacte->afterLoginRedirectTo(Class_Url::absolute($this->view->url())); - $this->checkNotifyMessage($orthodidacte, $orthodidacte->getDynamiqueUrl()); - } } diff --git a/library/Class/Systeme/ModulesMenu/SSOAbstract.php b/library/Class/Systeme/ModulesMenu/SSOAbstract.php index 20b418d2692..726f130c9ec 100644 --- a/library/Class/Systeme/ModulesMenu/SSOAbstract.php +++ b/library/Class/Systeme/ModulesMenu/SSOAbstract.php @@ -18,10 +18,10 @@ * along with BOKEH; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + abstract class Class_Systeme_ModulesMenu_SSOAbstract extends Class_Systeme_ModulesMenu_Null { protected $_login_redirect_url = null; - public function afterLoginRedirectTo($url) { $this->_login_redirect_url = $url; return $this; @@ -39,6 +39,11 @@ abstract class Class_Systeme_ModulesMenu_SSOAbstract extends Class_Systeme_Modul ? $this->urlForUser($user) : $this->loginUrl(); } + + + public function urlForUser($user) { + return ''; + } } ?> \ No newline at end of file diff --git a/tests/application/modules/opac/controllers/ModulesControllerKidilanguesTest.php b/tests/application/modules/opac/controllers/ModulesControllerKidilanguesTest.php index 26333f5a8ec..f3d5516a193 100644 --- a/tests/application/modules/opac/controllers/ModulesControllerKidilanguesTest.php +++ b/tests/application/modules/opac/controllers/ModulesControllerKidilanguesTest.php @@ -116,14 +116,14 @@ class ModulesControllerKidilanguesLoggedV2Test extends ModulesControllerKidilang class ModulesControllerKidilanguesNotLoggedTest extends ModulesControllerKidilanguesActivatedTestCase { public function setUp() { parent::setUp(); - $_SERVER['HTTP_REFERER'] = '/opac/modules/kidilangues'; + $_SERVER['HTTP_REFERER'] = '/opac'; $this->dispatch('/opac/modules/kidilangues', true); } /** @test */ public function shouldRedirectToLogin() { - $this->assertContains('/auth/login?redirect='.urlencode('/opac/modules/kidilangues'), + $this->assertContains('/auth/login?redirect='.urlencode(ROOT_URL . BASE_URL . '/modules/kidilangues'), $this->_response->getBody()); } } diff --git a/tests/application/modules/opac/controllers/ModulesControllerMyCowTest.php b/tests/application/modules/opac/controllers/ModulesControllerMyCowTest.php index be82a624556..9716635a989 100644 --- a/tests/application/modules/opac/controllers/ModulesControllerMyCowTest.php +++ b/tests/application/modules/opac/controllers/ModulesControllerMyCowTest.php @@ -98,14 +98,14 @@ class ModulesControllerMyCowNotLoggedTest extends AbstractControllerTestCase { parent::setUp(); ZendAfi_Auth::getInstance()->clearIdentity(); RessourcesNumeriquesFixtures::activateMyCow(); - $_SERVER['HTTP_REFERER'] = '/opac/modules/mycow'; + $_SERVER['HTTP_REFERER'] = '/'; $this->dispatch('/opac/modules/mycow', true); } /** @test */ public function shouldRedirectToLogin() { - $this->assertContains('/auth/login?redirect='.urlencode('/opac/modules/mycow'), + $this->assertContains('/auth/login?redirect='.urlencode(ROOT_URL . BASE_URL . '/modules/mycow'), $this->_response->getBody()); } } diff --git a/tests/application/modules/opac/controllers/ModulesControllerTest.php b/tests/application/modules/opac/controllers/ModulesControllerTest.php index f99de206135..6eb4a604957 100644 --- a/tests/application/modules/opac/controllers/ModulesControllerTest.php +++ b/tests/application/modules/opac/controllers/ModulesControllerTest.php @@ -46,7 +46,7 @@ class ModulesControllerLoginRequiredTest extends AbstractControllerTestCase { $this->dispatch('/opac/modules/' . $action); - $this->assertContains('/auth/login?redirect='.urlencode($_SERVER['HTTP_REFERER']), + $this->assertContains('/auth/login?redirect='.urlencode(ROOT_URL . BASE_URL . '/modules/' . $action), $this->_response->getBody()); } } -- GitLab