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.