Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-07-2009 15:58:11

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

[1.8.3][Zend_Acl] Autorisation et Controllers en plusieurs dossiers

Voilà, j'esseye de faire mon projet le mieux organisé possible et le plus standard possible. Par contre, je suis face à un problème pour attribuer l'autorisation à mes controllers. J'ai 2 dossiers général dans application soit User et Admin qui comporte chacun un IndexController.

Admin
---IndexController
---GestionController

User
---IndexController
---NouvelleController
---AutresController...

Seulement, lorsque je donne le nom des controllers autorisé à l'utilisateur, je donne la permission au user d'aller sur l'index mais j'aimerais préciser un peu plus, le permettre d'aller sur l'indexController du dossier user seulement. Est-ce possible sans changer le nom de mes controllers ?

Merci

Code:

        // define our possible user groups
        $acl->addRole(new Zend_Acl_Role('guest'));
        $acl->addRole(new Zend_Acl_Role('admin'));

        // define our controllers as resources.
        $acl->add(new Zend_Acl_Resource('index'));
        $acl->add(new Zend_Acl_Resource('login'));
        $acl->add(new Zend_Acl_Resource('admin'));

        // define our access rules
        
        $acl->allow('admin', 'admin');
        $acl->allow('guest', 'index');   <----- Je veux ici le index du dossier User
        $acl->allow('guest', 'login');

        // admins can get to everything
        $acl->allow('admin');
        return $acl;

Dernière modification par probitaille (07-07-2009 22:18:24)

Hors ligne

 

#2 07-07-2009 22:15:59

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8.3][Zend_Acl] Autorisation et Controllers en plusieurs dossiers

Un petit up

Hors ligne

 

#3 08-07-2009 08:10:38

pastel
Membre
Date d'inscription: 24-06-2009
Messages: 12

Re: [1.8.3][Zend_Acl] Autorisation et Controllers en plusieurs dossiers

En suposant que User et Admin sont des modules:

Code:

//en général (préciser l'action est facultative)
$acl->add(new Zend_Acl_Resource($module."/".$controller, $action));
//dans ton cas
$acl->add(new Zend_Acl_Resource("users/index"));
$acl->allow('guest', 'users/index');

Hors ligne

 

#4 08-07-2009 09:19:30

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [1.8.3][Zend_Acl] Autorisation et Controllers en plusieurs dossiers

Bonjour,

Je me demande si la syntaxe suivant ne fonctionne pas aussi:

Code:

$acl->add(new Zend_Acl_Resource('User_Index'));

A tester, je ne suis pas sûr du tout.


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#5 08-07-2009 09:28:53

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [1.8.3][Zend_Acl] Autorisation et Controllers en plusieurs dossiers

Oui peut importe le séparateur étant donné que c'est toi qui définis ce qu'est une ressource smile


Société : Direct Info Service

Hors ligne

 

#6 08-07-2009 14:42:49

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8.3][Zend_Acl] Autorisation et Controllers en plusieurs dossiers

Ouais, j'y avais pensé de cette façon là...mais comment définir le séparateur car du coup, si je change:

Code:

$acl->add(new Zend_Acl_Resource('index'));

pour:

Code:

$acl->add(new Zend_Acl_Resource('user/index'));

Il ne reconnait plus la ressource --> Message: Resource 'index' not found

Et ce autant pour le module admin et tous les controllers, comme s'il lisait "user/index' comme étant un controller en soi mais je n'ai pas pu vérifier.

J'ai cru à un problème de déclaration des modules mais je ne crois pas:

Code:

// Définition du répertoire de modules
        $frontController->setControllerDirectory(array(
            'default' => APPLICATION_PATH .'/user/controllers/'
        ));
        $frontController->addControllerDirectory(APPLICATION_PATH . '/admin/controllers','admin');

EDIT:

En même temps, avec une application modulaire, sommes nous oubligé de nommé nos controllers de cette façon car autrement moi cela ne fonctionne pas : class Admin_IndexController extends Zend_Controller_Action

Dernière modification par probitaille (08-07-2009 15:32:18)

Hors ligne

 

#7 08-07-2009 15:32:38

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [1.8.3][Zend_Acl] Autorisation et Controllers en plusieurs dossiers

Il ne s'agit pas d'un simple séparateur.

Dans les conventions PEAR/Zend, "User_Index" veut bien dire qu'il s'agit du controlleur Index du module User.

Ce n'est pas tout à fait la même chose que "user/index", puisque "User_IndexController" pourrait très bien se trouver dans le dossier "truc/index" (ce qui ne répondrait biensûr plus aux conventions pour lesquelles "_" signifie un noeud dans l'arborescence des dossiers, c'est pour appuyer mes propos).

Il faut à mon avis bien définir ses différents modules au frontController au préalable et ensuite tester la syntaxe suivante "User_Index" lors d'un ajout de ressource dans les ACLs.

Attention:

Code:

$frontController->setControllerDirectory(array(
            'default' => APPLICATION_PATH .'/user/controllers/'
        ));
        $frontController->addControllerDirectory(APPLICATION_PATH . '/admin/controllers','admin');

Ne sert pas à déclarer tes modules, mais à spécifier les chemins de tes controllers.

Il faut faire comme suit, dans application.ini :

Code:

;====== Resource frontController
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/../modules"
resources.frontController.moduleControllerDirectoryName = "controllers"

;====== Resource modules
resources.modules[] = ""

Ensuite tu nommes bien tes dossiers de modules comme leurs prefixes ("user/index"  => "User_IndexController").

Après test la syntaxe "User_Index" dans les ACLs (sans garantie).

A+ benjamin.

Dernière modification par Delprog (08-07-2009 15:38:53)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#8 10-07-2009 16:38:12

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8.3][Zend_Acl] Autorisation et Controllers en plusieurs dossiers

Ouais mais en fait, mon arborescence est comme ceci:

Application
--user
----Controllers
-------IndexControllers.php
--admin
----Controllers
-------IndexControllers.php


En fait, j'ai recréer l'arbo proposé par Zend: http://framework.zend.com/manual/en/zen … dular.html

Ainsi, je n'ai tout simplement pas besoin de déclarers un dossier de modules puisqu'ils sont directement dans application. J'ai essayer tout plein de format pour les déclarations: user_index, User_Index,user,index

Bref...je ne suis tout simplement pas capable de lui faire reconnaitre :

$acl->add(new Zend_Acl_Resource('module_controller'));

Code:

Request Parameters:

array(3) {
  ["module"]=>
  string(5) "admin"
  ["controller"]=>
  string(5) "index"
  ["action"]=>
  string(5) "index"
}

Dernière modification par probitaille (10-07-2009 16:52:01)

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