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, par exemple phpMyAdmin ou la console MySQL directement (évidemment, 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.