Bonjour,

J'essaye de mettre en place les Acl, pour sécuriser mon application.

soit la classe suivante :

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
 
<?php
class My_Classe_Acl extends Zend_Acl
{
	private $_role ;
 
	public function __construct ($role)
	{
		$this->_role = $role;
		$this->ajouterRole();
	}
	private function ajouterRole ()
	{
		$this->addRole(new Zend_Acl_Role('inactif'));
		$this->addRole(new Zend_Acl_Role('annuaire'));
		$this->addRole(new Zend_Acl_Role('introduction'), 'annuaire');
		$this->addRole(new Zend_Acl_Role('administration'), 'introduction');
		$this->addRole(new Zend_Acl_Role('organisation'), 'administration');
		$this->allow('inactif', null, 'stop');
		$this->allow('annuaire', NULL, 'annuaire');
		$this->allow('introduction', NULL, array(
 
			'annuaire' , 
			'introduction'
		));
		$this->allow('administration', NULL, array(
 
			'annuaire' , 
			'introduction' , 
			'administration'
		));
		$this->allow('organisation');
	}
 
	public function acces($access)
	{
 
		return $this->isAllowed($this->_role,NULL,$access);
	}
}

Dans ma base de données, chaque utilisateur à un rôle.

Donc un fois que l'utilisateur se connecte via Auth, j'instancie cette classe et je la met en session

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
My_Session::setData('Acl',new My_Classe_Acl(Zend_Auth::getInstance()-> getIdentity() -> log_acl));
My_Session est donc une classe qui gére la session.


je fais donc appel à ses méthodes de cette façon

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
	if (! My_Session::getData('Acl')->acces('administration'))
		{
			$this->_redirect('/error/redirect');
		}
J'obtient exactement le résultat voulu.

Mais dans la doc Zend on parle plutôt de sérialiser le méthode, et là je n'y arrive pas.

Voyer vous, une erreur conceptuelle dans ma façon de faire.

Merci de votre aide.

MaitrePylos