II. Mise en place▲
II-A. La table 'users'▲
La première chose dont nous avons besoin est une table 'users'. Ce n'est pas si compliqué, voici le schéma de la table users :
La requête SQL pour créer cette table est la suivante :
CREATE TABLE users (
id int(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
real_name VARCHAR(100) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY username(username)
);On a aussi besoin d'un utilisateur qui puisse se connecter :
INSERT INTO users (id, username, password, real_name) VALUES (1, 'rob', 'rob', 'Rob Allen');Exécutez ces requêtes dans votre client MySQL, comme par exemple phpMyAdmin ou la console MySQL directement (evidemment, vous pouvez changer les valeurs de username et password).
...
Zend_Loader::loadClass('Zend_Db_Table');
Zend_Loader::loadClass('Zend_Debug');
Zend_Loader::loadClass('Zend_Auth');
// load configuration
...
and
..
// setup database
$dbAdapter = Zend_Db::factory($config->db->adapter,
$config->db->config->asArray());
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db);
// setup controller
$frontController = Zend_Controller_Front::getInstance();
...Tout ce que nous avons à faire ici est de s'assurer que nous avons chargé la classe Zend_Auth et intégré l'adaptateur dbAdapter dans le registre. Nous le stockons dans le registre puisque nous en aurons besoin plus tard pour l'authentification.
II-B. Le contrôleur Auth▲
Nous avons besoin d'un contrôleur pour mettre en place les actions login et logout. En toute logique, appelons-le AuthController.
Nous commencerons avec un IndexController simple :
<?php
class AuthController extends Zend_Controller_Action
{
function init()
{
$this->initView();
$this->view->baseUrl = $this->_request->getBaseUrl();
}
function indexAction()
{
$this->_redirect('/');
}
}Nous créons d'abord la méthode init() pour que la vue soit initialisée et que baseUrl y soit assignée. Nous créons aussi la méthode indexAction() comme le nécessite le Zend_Controller_Action. Nous n'avons pas besoin de la méthode indexAction() puisque nous utiliserons les méthodes loginAction() et logoutAction(), donc nous redirigerons tous ceux qui tentent d'accéder par la barre d'adresse à auth/index sans s'être identifiés.



