avr
11
2010

Complément Zend_Auth et Zend_Session

Je viens de voir que j’ai oublié de vous parler de la variable de session créée lors de l’identification. Il faut savoir que Zend gère les variables de session de façon sécurisée. Autant vous pouvez en PHP standard modifier vos données avec un $_SESSION[“foo“], autant avec Zend, ces données sont sauvegardées dans un objet protégé qui lui, est stocké dans $_SESSION[].

Pour vous faire une idée, vous ne pouvez pas modifier accidentellement une donnée. Il faudra absolument passer par la classe Zend_Session pour les modifier.

Enfin, ici je vais vous montrer comment modifier le contenu di site en fonction de la connexion d’un visiteur. S’il est connecté, des menus apparaîtrons, sinon, d’autres seront présents.

Maintenant que l’introduction est finie, je vais juste vous faire faire une chose supplémentaire au tutoriel d’identification.

Quand le visiteur est déconnecté, le lien ‘identifiez-vous’ apparaît. Quand il est connecté, ce lien sera remplacé par ‘déconnexion’.

Tout ceci va se jouer dans la fichier header.phtml qui compose notre Layout. Au final, il devrait ressembler juste à ceci :

/application/layout/header.phtml

 HTML |  copy code |? 
01
<div id="header">
02
	Tutoriel ZF
03
</div>
04
<div id="liensheader">
05
	<a href="<?php echo $this->BaseUrl(); ?>"><span>Accueil</span></a>
06
	<?php 
07
        $auth = $this->getAuth('admin');
08
    	if($auth)
09
    	{
10
    	?>
11
	<a href="<?php echo $this->url(array('module' => 'admin' ,'controller' => 'index', 'action' => 'logout'), "", true); ?<"><span>Déconnexion</span></a>
12
	<?php 
13
    	}else{
14
	?>
15
	<a href="<?php echo $this->url(array('module' => 'admin' ,'controller' => 'index', 'action' => 'index'), "", true); ?>"><span>Identifiez-vous</span></a>
16
	<?php  } ?>
17
</div>

Attention, ici je fais les tests avec une aide de vue personnalisée. Je vais comme ça vous apprendre à rajouter une nouvelle Library en plus de Zend. La Library s’appellera App. Elle s’agrandira au fur et à mesure de l’avancé des tutoriels.

Tout d’abord, allez modifier le bootstrap en ajoutant la fonction suivante :

/application/Bootstrap.php

 PHP |  copy code |? 
1
protected static function _initNamespaces() 
2
{
3
	$autoloader = Zend_Loader_Autoloader::getInstance();
4
	$autoloader->registerNamespace('App_');
5
}

Ensuite, pour que Zend_View trouve nos différentes aides de vue automatiquement, nous allons rajouter la ligne suivante dans _initView() :
 PHP |  copy code |? 
1
$view->addHelperPath('App/View/Helper/', 'App_View_Helper');

Voilà. Maintenant que notre Library App existe, voici la première classe présente :

/library/App/View/Helper/GetAuth.php :

 PHP |  copy code |? 
1
class App_View_Helper_GetAuth
2
{
3
	function getAuth($namespace=null)
4
	{
5
		$auth = Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_Session($namespace));
6
		return $auth->getInstance()->getIdentity();
7
	}
8
}

Cette classe va nous retourner les informations e la personne authentifiée. Comme indiquée dans le précédent article, à la fin Zend_Auth va stocker, dans une variable de session, toutes les informations du membre mis à par son mot de passe. Comme ceci, nous testons si la variable est vide ou pas. Si elle est vide, l’utilisateur n’est pas connecté, sinon, il est bien présent. Vu que nous demandons de stocker les informations dans le Namespace de session ‘admin’, nous le renseignons dans les paramètres de getAuth().

Voilà, j’espère que ce complément vous a été utile.

Articles Connexes

A propos de l'Auteur: Benjamin Besse

Je suis Analyste Développeur chez Goomeo et je suis passioné par tout ce qui touche aux technologies du Web. J'ai commencé par apprendre l'utilisation du Framework Zend et j'ai continué naturellement via Android. Le tout seulement avec les bases acquises en DUT et Licence professionnelle Informatique.

Laisser un commentaire

Mots-Clefs