From 70620ecff078fa83e7e7cb7c0c4936e2fc9636ab Mon Sep 17 00:00:00 2001
From: gloas <gloas@debianAfiAnnecy>
Date: Tue, 21 Jan 2014 16:51:59 +0100
Subject: [PATCH] Boite-login: lorsqu'on clique sur "se deconnecter" ->
 redirige vers le profil parent

---
 .../opac/controllers/AuthController.php       |  2 +-
 .../opac/views/scripts/auth/boite-login.phtml |  3 +-
 library/ZendAfi/Controller/Action.php         |  6 ++++
 .../opac/controllers/AuthControllerTest.php   | 34 +++++++++++++++++--
 4 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/application/modules/opac/controllers/AuthController.php b/application/modules/opac/controllers/AuthController.php
index 82c4ee17481..33b842bef20 100644
--- a/application/modules/opac/controllers/AuthController.php
+++ b/application/modules/opac/controllers/AuthController.php
@@ -150,7 +150,7 @@ class AuthController extends ZendAfi_Controller_Action {
 
 	function logoutAction()	{
 		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->_redirect('/');
+		$this->_redirectToParentProfil();
 	}
 
 
diff --git a/application/modules/opac/views/scripts/auth/boite-login.phtml b/application/modules/opac/views/scripts/auth/boite-login.phtml
index 90872411e2b..9a452b2dcaa 100644
--- a/application/modules/opac/views/scripts/auth/boite-login.phtml
+++ b/application/modules/opac/views/scripts/auth/boite-login.phtml
@@ -9,8 +9,7 @@
 		if ($user->hasIdabon())
 			echo $this->ficheAbonneLinks($user->getNbEmprunts(), $user->getNbEmpruntsRetard(), $user->getNbReservations());
 		echo sprintf('<a href="%s" target="_parent">%s</a>', $this->url(['controller'=>'auth',
-																																		 'action'=>'logout',
-																																		 'id_profil'=>$this->preferences['profil_redirect'] > 0 ? $this->preferences['profil_redirect'] : Class_Profil::getCurrentProfil()->getId()],null,true), $this->_($this->preferences['lien_deconnection']));
+																																		 'action'=>'logout'],null,true), $this->_($this->preferences['lien_deconnection']));
 	} else {
 		$form = ZendAfi_Form_Login::newWithOptions(['data' => array_merge(
 			$this->preferences,
diff --git a/library/ZendAfi/Controller/Action.php b/library/ZendAfi/Controller/Action.php
index 259247c657f..fc0100b4c8a 100644
--- a/library/ZendAfi/Controller/Action.php
+++ b/library/ZendAfi/Controller/Action.php
@@ -141,6 +141,12 @@ class ZendAfi_Controller_Action extends Zend_Controller_Action {
 	}
 
 
+	protected function _redirectToParentProfil() {
+		$current_profil = Class_Profil::getCurrentProfil();
+		$this->_redirect($current_profil->hasParentProfil() ? '/opac/index/index/id_profil/'.$current_profil->getParentProfil()->getId() : '/');
+	}
+
+
 	protected function _redirectToEdit($model) {
 		$this->_redirect('/admin/'.$this->_request->getControllerName().'/edit/id/'.$model->getId());
 	}
diff --git a/tests/application/modules/opac/controllers/AuthControllerTest.php b/tests/application/modules/opac/controllers/AuthControllerTest.php
index 0df33877074..96c08d9969b 100644
--- a/tests/application/modules/opac/controllers/AuthControllerTest.php
+++ b/tests/application/modules/opac/controllers/AuthControllerTest.php
@@ -163,6 +163,32 @@ class AuthControllerAbonneSIGBLoggedLogoutTest extends PortailWithOneLoginModule
 }
 
 
+class AuthControllerWithProfilPageAbonneSIGBLoggedLogoutTest extends PortailWithOneLoginModuleTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->profil_adulte = $this->fixture('Class_Profil', ['id' => 22])
+			->setBrowser('opac')
+			->setLibelle('Profil Adulte')
+			->setHauteurBanniere(150)
+			->setCouleurTexteBandeau('#F2C')
+			->setCouleurLienBandeau('#234')
+			->setMenuHautOn(true)
+			->setCfgMenus([])
+			->setCommentaire('Super bib')
+			->setRefTags('bib,Adulte')
+			->setParentProfil(Class_Profil::getCurrentProfil());
+		$this->profil_adulte->assertSave();
+		Class_Profil::setCurrentProfil($this->profil_adulte);
+		$this->dispatch('/opac/auth/logout');
+	}
+
+	
+	/** @test **/
+	public function linkSeDeconnecterShouldRedirectToParentProfil() {
+		$this->assertRedirectTo('/opac/index/index/id_profil/2');
+	}
+
+}
 
 
 abstract class AuthControllerNobodyLoggedTestCase extends PortailWithOneLoginModuleTestCase {
@@ -1007,14 +1033,16 @@ class portailWithOneLoginModuleTestAndLoggedUserCase extends AbstractControllerT
 
 
 				/** @test */
-	public function redirectProfilForLogoutShouldNotBeProfil2(){
-		$this->assertXPath('//a[contains(@href,"auth/logout/id_profil/2")]',$this->_response->getBody());
+	public function redirectProfilForLogoutShouldBeProfilParent(){
+		$this->bootstrap();
+		$this->dispatch('opac/auth/logout');
+		$this->assertRedirectTo('/');
 	}
 
 
 		/** @test */
 	public function redirectProfilForLogoutShouldNotBeProfil0(){
-		$this->assertNotXPath('//a[contains(@href,"abonne/logout/id_profil/0")]',$this->_response->getBody());
+		$this->assertNotXPath('//a[contains(@href,"auth/logout/id_profil/")]',$this->_response->getBody());
 	}
 
 }
-- 
GitLab