Bonjour,
Je débute avec Zend et plus précisément dans le modèle MVC.
Je me penche sur l'utilisation de Zend_Auth et Zend_Acl et j'ai une question
J'ai lu les tutoriaux disponibles et ils considèrent tous que les rôles sont stockés/gérés en BDD.
Aucun ne précise explicitement comment celà fonctionne, c'est à dire comment structurer tout ça (BDD et Zend) pour que Zend_Auth récupère automatiquement les rôles et qu'on connaisse le type d'utilisateur une fois qu'il est connecté.
Comment faire ?
Sachant que j'ai pour l'instant pour Zend_Auth un controller avec l'action suivante (copie conforme du tutoriel présent sur developpez) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 function loginAction() { $this->view->message = ''; if ($this->_request->isPost()) { // collect the data from the user Zend_Loader::loadClass('Zend_Filter_StripTags'); $f = new Zend_Filter_StripTags(); $username = $f->filter($this->_request->getPost('username')); $password = $f->filter($this->_request->getPost('password')); if (empty($username)) { $this->view->message = 'Please provide a username.'; } else { // setup Zend_Auth adapter for a database table Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable'); $dbAdapter = Zend_Registry::get('dbAdapter'); $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); $authAdapter->setTableName('users'); $authAdapter->setIdentityColumn('username'); $authAdapter->setCredentialColumn('password'); // Set the input credential values to authenticate against $authAdapter->setIdentity($username); $authAdapter->setCredential($password); // do the authentication $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($authAdapter); if ($result->isValid()) { // success: store database row to auth's storage // system. (Not the password though!) $data = $authAdapter->getResultRowObject(null, 'password'); $auth->getStorage()->write($data); $this->_redirect('/'); } else { // failure: clear database row from session $this->view->message = 'Login failed.'; } } } $this->view->title = "Log in"; }
Ensuite je suis en train de tester les possibilités avec Zend_Acl, et plus précisément l'utilisation de plugins pour tester les autorisations avant de faire appel aux contrôleurs (preDispatch).
C'est assez complexe au premier coup d'oeil, mais ça prend tout son sens une fois qu'on a compris. J'ai pas encore de question mais ça va peut-être venir.
Merci,
Benjamin.
Partager