Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-09-2007 21:33:05

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

[Résolu][Zend_Acl]Probleme Zend_Acl not found /

Bonjour bonjour,

Je suis débutant sur Zend, j'ai réalisé mon site grace au tutoriel tres bien fait qui est celui ci:
http://g-rossolini.developpez.com/tutor … k/debuter/

J'ai ensuite intégré un systeme de session grace a ce tutoriel :
http://r-benyacoub.developpez.com/tutor … zend-auth/

Jusque la tout va bien, ça marche niquel.

Mais apparament, il est fortement conseillé d'utilisé Zend_Acl pour les Droits d'acces.
Etant donné que j'ai "guest", "membre", "proprio" et "admin" comme type d'acces.

J'ai donc suivi ce tutoriel :
http://alain-sahli.developpez.com/tutor … ework/acl/

Mais j'ai l'erreur suivante :
Fatal error: Class 'Zend_Acl' not found in url

J'ai cru comprendre que le tutoriel n'etait plus a jour, j'utilise le Zend Framework 1.0.1.

Quels modifications sont a effectuer pour que ça marche ? Je suis debutant, je sais pas trop comment régler mon probleme :s

Cordialement

Florent

Dernière modification par fblutch (24-10-2007 11:03:39)

Hors ligne

 

#2 20-09-2007 22:56:31

Ysaak
Membre
Lieu: Strasbourg
Date d'inscription: 18-06-2007
Messages: 33

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

Bonsoir,

Cela ne semble pas précisé dans le tutoriel, mais as-tu pensé à inclure la classe ?

Code:

Zend_Loader::loadClass('Zend_Acl');

A+,
Damien

Hors ligne

 

#3 21-09-2007 00:47:18

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

effectivement, il manquait pas mal de class, apres les avoirs tous inclus, maintenant ça me fait

Code:

Fatal error: Uncaught exception 'Zend_Exception' with message 'File "ModuleDispatcher.php" 
       was not found' in /.../library/Zend/Loader.php:159
Stack trace: 
 #0 /.../library/Zend/Loader.php(91): Zend_Loader::loadFile('ModuleDispatche...', Array, true)
 #1 /.../index.php(22): Zend_Loader::loadClass('Zend_Controller...')
 #2 {main} thrown in /.../library/Zend/Loader.php on line 159

Dernière modification par fblutch (21-09-2007 00:50:09)

Hors ligne

 

#4 24-09-2007 11:33:18

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

personne pour m'aidé a corriger mon code?

Hors ligne

 

#5 01-10-2007 08:57:59

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

Bonjour,

Tu peux nous envoyer ton index.php, sinon on va avoir un peu de mal à corriger le code smile

Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#6 11-10-2007 13:36:32

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

en fait j'aimerais savoir si il est toujours d'actualité le tutorial sur Zend_Acl
et si avec cela, me permetera bien de donné acces ou nom en fonction de l'utilisateur qui se sera logé.

Car j'ai peur de mal avoir compris le but de Zend_Acl en fait :s

Car moi j'pensais que sa me premeterais de géré avec une variable "status" dans la session de definir si il a acces a tel endroit ou nom d'une façon simple sans faire pein de test.

Sinon mon erreur c'est avec le dispatcher et j'arrive vraiment pas a resoudre :s

Hors ligne

 

#7 11-10-2007 14:55:18

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

Bonjour,

Dans "comment débuter" il y a 2 tutos sur Zend_Acl :
http://www.kitpages.fr/zf_zendAcl.php : te donne le fonctionnement de base de Zend_Acl et donne la syntaxe
http://alain-sahli.developpez.com/tutor … ework/acl/ te donne un exemple d'utilisation sur un site réel.

Les 2 tutos sont à jour

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#8 16-10-2007 09:59:06

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

Merci pour les tutos, mais j'ai tjrs un bug pr utilisé l'acl avec l'auth ce coup ci.

j'ai mon fichier Auth.php qui est dans library/Zend/My/Plugin/auth.php

Code:

<?php

class Zend_My_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' => 'index',
                            'action' => 'index');
   
    public function __construct($auth, $acl)
    {
        $this->_auth = $auth;
        $this->_acl = $acl;
    }

public function preDispatch($request)
{
        if ($this->_auth->hasIdentity()) {
            $role = $this->_auth->getIdentity()->getUser()->status;
        } 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'];

J'ai un fichier MyAcl.php qui se situe dans ./aplication/
que j'inclu grace a un include "./application/MyAcl.php";
Donc j'ai defini les roles comme sa:

Code:

<?php 
$acl = new Zend_Acl();

// creer des ressources
        $acl->add(new Zend_Acl_Resource('index'));
        $acl->add(new Zend_Acl_Resource('evenement'));
        $acl->add(new Zend_Acl_Resource('etablissement'));
        $acl->add(new Zend_Acl_Resource('photo'));
        $acl->add(new Zend_Acl_Resource('membre'));
        $acl->add(new Zend_Acl_Resource('auth'));
        $acl->add(new Zend_Acl_Resource('admin'));
        
// creation de roles "individus"
        $acl->addRole(new Zend_Acl_Role('guest')); 
        $acl->addRole(new Zend_Acl_Role('membre'), 'guest');
        $acl->addRole(new Zend_Acl_Role('proprio'), 'membre');
        $acl->addRole(new Zend_Acl_Role('admin'), 'proprio');

        // Les invités peuvent uniquement voir le contenu
        $acl->allow('guest', 'index');
// indiquer qui a le droit de faire quoi        
        $acl->allow('guest', 'evenement', 'index');
        $acl->allow('guest', 'evenement', 'view');
        $acl->allow('guest', 'evenement', 'photo');
        
        $acl->allow('guest', 'etablissement', 'index');
        $acl->allow('guest', 'etablissement', 'view');

        $acl->allow('guest', 'photo', 'index');
        $acl->allow('guest', 'photo', 'view');

        $acl->allow('guest', 'membre', 'view');
        
        $acl->allow('guest', 'auth', 'login');
        
        $acl->allow('membre', 'evenement');
        $acl->deny('membre', 'evenement', 'supprimer');
        $acl->allow('membre', 'membre');
        $acl->deny('membre', 'membre', 'supprimer');
        $acl->allow('membre', 'photo');
        $acl->deny('membre', 'photo', 'supprimer');
        $acl->allow('membre', 'etablissement', 'fidele');
        $acl->allow('membre', 'etablissement', 'ajoutercom');
        
        $acl->allow('proprio', 'etablissement');
        $acl->deny('proprio', 'etablissement', 'supprimer');
        
        $acl->allow('admin'); // Accès sans aucune restriction

et mon bootstrap :

Code:

<?php
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Europe/Paris');
set_include_path('.'
    . PATH_SEPARATOR . './library'
    . PATH_SEPARATOR . './application/models/'
    . PATH_SEPARATOR . get_include_path());

// load configuration
include "Zend/Loader.php";
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass('Zend_Config_Ini');
Zend_Loader::loadClass('Zend_Registry');
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Db_Table');
Zend_Loader::loadClass('Zend_Debug');
Zend_Loader::loadClass('Zend_Auth');
Zend_Loader::loadClass('Zend_Acl');
Zend_Loader::loadClass('Zend_Acl_Role');
Zend_Loader::loadClass('Zend_Acl_Resource');
Zend_Loader::loadClass('Zend_My_Plugin_Auth');

// load configuration
$config = new Zend_Config_Ini('./application/config.ini', 'general');
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);

// setup database
$db = Zend_Db::factory($config->db->adapter,  $config->db->config->toArray());
Zend_Db_Table::setDefaultAdapter($db);
$dbAdapter = Zend_Db::factory($config->db->adapter,  $config->db->config->toArray());
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db);

// Création de l'objet Auth
$auth = Zend_Auth::getInstance();

// Création de l'objet Acl
include "./application/MyAcl.php";

// setup controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory('./application/controllers');
$frontController->registerPlugin(new Zend_My_Plugin_Auth($auth, $acl));
$frontController->setParam('auth', $auth);


// run!
$frontController->dispatch();

Voila, ci avec sa, vous pouviez m'aidé a resoudre mon probleme d'acces.

Donc là j'ai cette erreur là :

Code:

Parse error: syntax error, unexpected $end in /home/web/virtual/over-book.com/htdocs/site2/library/Zend/My/Plugin/Auth.php on line 43

et si je ferme les } sa me donne sa :

Code:

Strict Standards: Declaration of Zend_My_Plugin_Auth::preDispatch() should be compatible with that of Zend_Controller_Plugin_Abstract::preDispatch() in /home/web/virtual/over-book.com/htdocs/site2/library/Zend/My/Plugin/Auth.php on line 47

Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Session must be started before any output has been sent to the browser; output started in /home/web/virtual/over-book.com/htdocs/site2/library/Zend/My/Plugin/Auth.php/47' in /home/web/virtual/over-book.com/htdocs/site2/library/Zend/Session.php:359 Stack trace: #0 /home/web/virtual/over-book.com/htdocs/site2/library/Zend/Session/Namespace.php(116): Zend_Session::start(true) #1 /home/web/virtual/over-book.com/htdocs/site2/library/Zend/Auth/Storage/Session.php(85): Zend_Session_Namespace->__construct('Zend_Auth') #2 /home/web/virtual/over-book.com/htdocs/site2/library/Zend/Auth.php(92): Zend_Auth_Storage_Session->__construct() #3 /home/web/virtual/over-book.com/htdocs/site2/library/Zend/Auth.php(134): Zend_Auth->getStorage() #4 /home/web/virtual/over-book.com/htdocs/site2/library/Zend/My/Plugin/Auth.php(24): Zend_Auth->hasIdentity() #5 /home/web/virtual/over-book.com/htdocs/site2/library/Zend/Controller/Plugin/Broker.php(307): Zend_My_Plugin_Auth->preDisp in /home/web/virtual/over-book.com/htdocs/site2/library/Zend/Session.php on line 359

Donc voila, je sais plus trop quoi faire, mais il y a de l'avancement tout de meme smile

Hors ligne

 

#9 16-10-2007 10:12:30

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

Bonjour,

dans ton plugin auth, change

Code:

public function preDispatch($request)

en

Code:

public function preDispatch(Zend_Controller_Request_Abstract $request)

Sinon ta fonction n'est pas strictement compatible avec son parent. Tu dois avoir E_STRICT activé dans ton niveau d'erreur, c'est pour ça qu'il est pointilleux sur des trucs comme ça...

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#10 16-10-2007 10:59:52

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

Merci pour la rapidité sa marche !!!
enfin... il n'y a plus d'erreur mais le probleme est que je peux accedé a admin alors que je ne suis pas logé :s

edit, et qu'elle est la difference concrete entre $_noauth et $_noacl dans le Auth.php ?

Merci

Dernière modification par fblutch (16-10-2007 11:34:40)

Hors ligne

 

#11 18-10-2007 10:32:23

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

pas de reponse ?
on dirais que le plugin ne sert a rien en fait, car je peux accedé a tout kan je suis logé quoi qu'il arrive :s

ou est le probleme ?

Hors ligne

 

#12 20-10-2007 18:01:06

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

pas d'idée du pourquoi j'ai acces a tout meme si je suis logué en membre ou en rien du tout ? svp

Hors ligne

 

#13 22-10-2007 08:36:19

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

noauth c'est la page où tu vas quand tu n'es pas loggué et noacl c'est celle où tu vas quand tu es loggué mais que tu n'as pas les droits nécessaires.
Sinon mets des logs dans ton appli pour savoir où est le problème, quelles données tu reçois à quel endroit pour voir pourquoi tu es autorisé...

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#14 23-10-2007 11:16:47

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: [Résolu][Zend_Acl]Probleme Zend_Acl not found /

bon alors j'ai testé avec des fichiers de log, sa marche bien dans les fichier de log les noacl, noauth corresponde bien a se que j'ai défini.
Mais en fait sa ne redirige pas le $controller.
donc j'ai essayé un $this->_redirect('/'.$controller.'/'.$action);
mais sa me dit que je peux pas faire un redirect dans mon plugin.

Donc je sais pas trop quoi faire. . .


edit :
bon j'ai trouvé la solution !!!
il fallait mettre :
                $request->setControllerName($controller);
                $request->setActionName($action);

smile

youpi Zend_Acl marche! Merci pour votre aide:)

Dernière modification par fblutch (23-10-2007 11:31:36)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages