IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Acl & Zend_Auth PHP Discussion :

Erreur dans le tutoriel : "Zend_Acl / Zend_Auth scénario d'exemple"


Sujet :

Zend_Acl & Zend_Auth PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Erreur dans le tutoriel : "Zend_Acl / Zend_Auth scénario d'exemple"
    Bonjour,

    Ne sachant pas où poster ce message (je n'ai pu trouvé de mail pour contacter l'auteur en cas d'erreur), je me permet donc de créer ce sujet pour faire part d'une erreur dans le tutoriel de Alain Sahli (traduction du tutoriel de Simon Mundy).

    Voici le code en question :

    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
    <?php
     
    class MyLib_Plugin_Auth extends Zend_Controller_Plugin_Abstract
    {
    	private $_auth;
    	private $_acl;
     
    	private $_noauth = array(	'module'	=>	'default',
    								'controller'=>	'auth',
    								'action'	=>	'login');
     
    	private $_noacl = array(	'module'	=>	'default',
    								'controller'=>	'error',
    								'action'	=>	'privileges');
     
    	public function __construct($auth, $acl)
    	{
    		$this->_auth = $auth;
    		$this->_acl = $acl;
    	}
     
    	public function preDispatch(Zend_Controller_Request_Abstract $request)
    	{
    		if($this->_auth->hasIdentity())
    			$role = $this->_auth->getIdentity()->role;
    		else
    			$role = 'guest';
     
    		$controller = $request->controller;
    		$action = $request->action;
    		$module = $request->module;
    		$resource = $controller;
     
    		if(!$this->_acl->has($resource))
    			$resource = null;
     
    		if(!$this->_acl->isAllowed($role, $resource, $action))
    		{
    			if(!$this->_auth->hasIdentity())
    			{
    				$module = $this->_noauth['module'];
    				$controller = $this->_noauth['controller'];
    				$action = $this->_noauth['action'];
    On peut très bien constater qu'il manque une fin dans ce code !
    En voici donc la fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    			}
    			else
    			{
    				$module = $this->_noacl['module'];
    				$controller = $this->_noacl['controller'];
    				$action = $this->_noacl['action'];
    			}
    		}
     
    		$request->setModuleName($module);
    		$request->setControllerName($controller);
    		$request->setActionName($action);
    	}
    }
    Cette erreur est aussi présente dans le tutoriel original en anglais.

    Bonne journée,
    Lionel B

  2. #2
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Merci on s'en occupe

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je viens de constater une autre erreur, minime cette fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MyAcl extends Zend_Acl
    {
    public function __construct(Zend_Auth $auth)
    {
    parent::__construct();
    $roleGuest = new Zend_Acl_Role('guest');
    $this->add(new Zend_Acl_Resource('home'));
    $this->add(new Zend_Acl_Resource('news'));
    $this->add(new Zend_Acl_Resource('tutorials'));
    $this->add(new Zend_Acl_Resource('forum'));
    $this->add(new Zend_Acl_Resource('support'));
    $this->add(new Zend_Acl_Resource('admin'));
    $this->addRole(new Zend_Acl_Role('guest'));
    $this->addRole(new Zend_Acl_Role('member'), 'guest');
    new Zend_Acl_Role('guest'); est apellé 2 fois, ce qui est inutile.
    On peut donc supprimer $roleGuest qui n'est pas utilisé.

  4. #4
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    j'avais zappé. J'ai contacté l'auteur, la correction devrait arriver

    Merci encore et désolé pour l'oubli.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/06/2011, 21h32
  2. Zend_Acl / Zend_Auth scénario d'exemple
    Par linuxxp dans le forum Zend_Acl & Zend_Auth
    Réponses: 3
    Dernier message: 18/05/2009, 14h57
  3. Erreur dans le tutoriel
    Par fourniey dans le forum Zend Framework
    Réponses: 14
    Dernier message: 22/03/2009, 12h21
  4. [ZF 1.7] Erreurs dans le cour Débutez avec Zend_Auth
    Par c_creatix dans le forum Zend_Acl & Zend_Auth
    Réponses: 3
    Dernier message: 10/02/2009, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo