Bonjour à tous,

Voila une question récurrente, malgré avoir consulter 'quasi tous' les tuto + le livre de Mr Pauli, j'ai du mal à mettre en place la gestion des utilisateurs pour mon site web. Et peut etre que ce post pourra aider d'autre personne.

Pour un soucis de comprhénsion, dans un premier temps, je souhaite partir d'un exemple très basique, à savoir si je suis administrateur, j'affiche un lien 'admin' si je suis 'guest' aucun lien.

analyse:
ressource=administration
role=admin
acces=lecture

bootstrap.php
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
 
...
	//ZEND_SESSION : initialisation de la session
	$session = new Zend_Config_Ini('../application/session.ini', APP_MODE_SESSION);
	Zend_Session::setOptions($session->toArray());
	Zend_Registry::set('session',$session);	
		//Creation d un espace de nom
	$sessionMVC = new Zend_Session_Namespace('MVC');
	Zend_Registry::set('MVC_RedirectorToOrigin', $sessionMVC);
 
	//ZEND_ACL : création des autorisations des utilisateurs
	if(!isset($session->acl)){
		$acl = new Zend_Acl();
        $acl->add(new Zend_Acl_Resource('administration'));
		//roles
		$acl->addRole(new Zend_Acl_Role('admin'));
		// Accès sans aucune restriction
        $acl->allow('admin'); 
		Zend_Registry::set('acl',$acl);
		$sessionMVC->acl = $acl;
	}
...
Ici j'ai créé ma ressource 'administration' et mon utilisateur 'admin', je lui accorde tous les droits

1. Authentification
Je créé un LoginController, qui comporte un formulaire récupérant les infos insérés, et je procède à l'authentification :
LoginController.php
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
 
					$db = Zend_Registry::get('db');
					//$db = Zend_Db_Table_Abstract::getDefaultAdapter();
					$dbAdapter = new Zend_Auth_Adapter_DbTable($db);
					//structure de notre tableu utilisateur
					$dbAdapter->setTableName('users');
					$dbAdapter->setIdentityColumn('username');
					$dbAdapter->setCredentialColumn('password');
					//champs envoyes par l utilisateur
					$dbAdapter->setCredential($password)->setIdentity($username);
					//authentification
					$auth = Zend_Auth::getInstance();
					//enregistrement en session
					$result = $auth->authenticate($dbAdapter);
					if($result->isValid())
					{
						//sauvegarde tous les details sauf le password
						$data = $dbAdapter->getResultRowObject(null, 'password');
						$auth->getStorage()->write($data);
						$this->view->message = 'Login success.';
						//redirection a la page d accueil
						$this->_helper->redirector('index', 'index');
					}else	{
						// failure: clear database row from session
						$this->view->message = 'Login failed.';
					}
Je me retrouve identifié, et la je bloque sur la suite du déroulement du processus. Que faut il faire ? un plugin SetAcl ?..

Merci d'avance de votre aide