Zend Framework

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

<div id="header">Tutoriel ZF</div>
<div id="liensheader">
    <a href="<?php echo $this->BaseUrl(); ?>"><span>Accueil</span></a>
    <?php 
        $auth = $this->getAuth('admin');
        if($auth)
        {
    ?>
    <a href="<?php echo $this->url(array('module' => 'admin' ,'controller' => 'index', 'action' => 'logout'), "", true); ?>">
        <span>Déconnexion</span>
    </a>

    <?php 
        }else{
    ?>
    <a href="<?php echo $this->url(array('module' => 'admin' ,'controller' => 'index', 'action' => 'index'), "", true); ?>">
        <span>Identifiez-vous</span>
    </a>
    <?php  } ?>
</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

protected static function _initNamespaces() 
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace('App_');
}

Ensuite, pour que Zend_View trouve nos différentes aides de vue automatiquement, nous allons rajouter la ligne suivante dans _initView() :

$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 :

class App_View_Helper_GetAuth
{
    function getAuth($namespace=null)
    {
        $auth = Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_Session($namespace));
        return $auth->getInstance()->getIdentity();
    }
}

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.