diff --git a/application/modules/admin/views/scripts/modules/auth_form.phtml b/application/modules/admin/views/scripts/modules/auth_form.phtml index 4b8f12f734ffab60176177fd84a3fda077958262..90c22cde8a44e7aef4111ca48ebcff9a92e782f9 100644 --- a/application/modules/admin/views/scripts/modules/auth_form.phtml +++ b/application/modules/admin/views/scripts/modules/auth_form.phtml @@ -79,3 +79,15 @@ ?> </td> </tr> + + +<tr> + <td class="droite">Déconnexion : basculer sur le profil: </td> + <td class="gauche"> + <?php $this->getHelper('ComboProfils') + ->setTagId('profil_deco_redirect') + ->setTagName('profil_deco_redirect'); + echo $this->ComboProfils('ALL', 'ALL', $this->preferences['profil_deco_redirect']); + ?> + </td> +</tr> diff --git a/application/modules/opac/controllers/AuthController.php b/application/modules/opac/controllers/AuthController.php index 70e6c899a493628f74d3d6a3f6048756d9cc1429..8e856c425348cb58bfa54eae58cb86fdce5c3f46 100644 --- a/application/modules/opac/controllers/AuthController.php +++ b/application/modules/opac/controllers/AuthController.php @@ -151,8 +151,11 @@ class AuthController extends ZendAfi_Controller_Action { function logoutAction() { + $preferences = Class_Profil::getCurrentProfil()->getCfgModulesPreferences('auth','login'); + ZendAfi_Auth::getInstance()->clearIdentity(); - $this->_redirectToParentProfil(); + xdebug_break(); + $this->_redirectToDecoProfil($preferences); } diff --git a/library/Class/Systeme/ModulesAccueil/Login.php b/library/Class/Systeme/ModulesAccueil/Login.php index 5a91f2973f49eae71f7c60a14d608499f9ba3603..1eb5a5f0e47ca6d6601400e83657cf9ecad58e72 100644 --- a/library/Class/Systeme/ModulesAccueil/Login.php +++ b/library/Class/Systeme/ModulesAccueil/Login.php @@ -55,7 +55,8 @@ class Class_Systeme_ModulesAccueil_Login extends Class_Systeme_ModulesAccueil_Nu 'lien_compte' => '» Mon compte', 'lien_deconnection' => '» Se déconnecter', 'autocomplete_off' => 1 ,// si == 1, rajoute autocomplete="off" au formulaire - 'profil_redirect' => '0' + 'profil_redirect' => '0', + 'profil_deco_redirect' => '0' ]; } ?> \ No newline at end of file diff --git a/library/ZendAfi/Controller/Action.php b/library/ZendAfi/Controller/Action.php index fc0100b4c8a829f022d51890de6a89c508ae6fb1..93d073a1faedf65be44d1aeddfe7b14c0ed3ac3d 100644 --- a/library/ZendAfi/Controller/Action.php +++ b/library/ZendAfi/Controller/Action.php @@ -105,7 +105,7 @@ class ZendAfi_Controller_Action extends Zend_Controller_Action { public function editAction() { if (!$model = $this->_definitions->find($this->_getParam('id'))) { - $this->_redirectToIndex(); + $this->_rectToIndex(); return; } $this->view->titre = $this->_definitions->editActionTitle($model); @@ -147,6 +147,14 @@ class ZendAfi_Controller_Action extends Zend_Controller_Action { } + protected function _redirectToDecoProfil($preferences) { + if ($preferences['profil_deco_redirect']>0) + $this->_redirect('/opac/index/index/id_profil/'.$preferences['profil_deco_redirect']); + else + $this->_redirectToParentProfil(); + } + + protected function _redirectToEdit($model) { $this->_redirect('/admin/'.$this->_request->getControllerName().'/edit/id/'.$model->getId()); } diff --git a/tests/application/modules/admin/controllers/AccueilControllerTest.php b/tests/application/modules/admin/controllers/AccueilControllerTest.php index 8f9b27d90f5f950c6874fe4eb94317850202ea7c..2b63a84b0e23ad83f11ea0bf9455567fe934059b 100644 --- a/tests/application/modules/admin/controllers/AccueilControllerTest.php +++ b/tests/application/modules/admin/controllers/AccueilControllerTest.php @@ -477,6 +477,7 @@ class AccueilControllerConfigBoiteLoginTest extends Admin_AbstractControllerTest 'division' => 4, 'id_module' => 32, 'preferences' => ['profil_redirect'=>'1', + 'profil_deco_redirect' => '1', 'mot_de_pass_exemple' => 'dd/mm/aaaa']]); $this->dispatch('/admin/accueil/login?config=accueil&type_module=LOGIN&id_module=32', true); } @@ -488,6 +489,12 @@ class AccueilControllerConfigBoiteLoginTest extends Admin_AbstractControllerTest } + /** @test */ + public function selectDecoProfilRedirectShouldContainsProfil1() { + $this->assertXPathContentContains('//select[@id="profil_deco_redirect"][@name="profil_deco_redirect"]/optgroup/option[@value="1"][@selected="selected"]', 'portail: Accueil', $this->_response->getBody()); + } + + /** @test */ public function inputTitreShouldBeSeConnecter() { $this->assertXPath('//input[@name="titre"][@value="Se connecter"]'); @@ -552,6 +559,12 @@ class AccueilControllerConfigBoiteLoginTest extends Admin_AbstractControllerTest public function selectProfilShloudBeEmptyValue() { $this->assertXPath('//td/select[@id="profil_redirect"]/option'); } + + /** @test **/ + public function selectProfilDeconnectionShouldBeEmptyValue() { + $this->assertXPath('//td/select[@id="profil_deco_redirect"]/option'); + } + } diff --git a/tests/application/modules/opac/controllers/AuthControllerTest.php b/tests/application/modules/opac/controllers/AuthControllerTest.php index e2f936bc7cf576edee8cf3a873d13a4620473b41..dafeec35c3384b493b25431bf87b456cb27aece8 100644 --- a/tests/application/modules/opac/controllers/AuthControllerTest.php +++ b/tests/application/modules/opac/controllers/AuthControllerTest.php @@ -39,7 +39,8 @@ abstract class PortailWithOneLoginModuleTestCase extends AbstractControllerTestC 'titre_connecte' => 'Vous êtes connecté(e)', 'lien_connexion' => 'please, log me', 'lien_mot_de_passe_oublie' => 'me rappelle plus', - 'profil_redirect' => 1]]], + 'profil_redirect' => 1, + 'profil_deco_redirect' => 5]]], 'options' => []]; Class_Profil::getCurrentProfil() @@ -194,6 +195,22 @@ class AuthControllerWithProfilPageAbonneSIGBLoggedLogoutTest extends PortailWith } + +class AuthControllerWithProfilPageAbonneSIGBLoggedLogoutDeconnectionProfilTest extends PortailWithOneLoginModuleTestCase { + public function setUp() { + parent::setUp(); + $this->dispatch('/opac/auth/logout'); + } + + + /** @test **/ + public function linkSeDeconnecterShouldRedirectToSelectedProfil5() { + $this->assertRedirectTo('/opac/index/index/id_profil/5'); + } + +} + + abstract class AuthControllerNobodyLoggedTestCase extends PortailWithOneLoginModuleTestCase { public function setUp() { parent::setUp();