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 :

zend acl with modular application [ZF 1.11]


Sujet :

Zend_Acl & Zend_Auth PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut zend acl with modular application
    salut, alors j'ai un problème dans mon projet,
    j'ai crée 2 role un user qui peut consulter les listes et un admin qui peux les gérer mai le probleme est pour le module admin aucune opération ne fonctionne ! commen puis-je modifier le bootsrap ou quel fichier dois-je modifier ?
    SVP j'en ai si besoin tré urgent. merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    avec qu'elle manière tu défini les rôles et les droits.
    A la recherche d'un film : http://chercher-un-film.com

  3. #3
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Bonjour houuuta,

    Quelle est l'arborescence de ton application ?
    Qu'as-tu déjà codé ? (plugin d'authentification, définition des ACLs notamment)

  4. #4
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    voila l'arborescence du projet :
    Images attachées Images attachées  

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    le problème que je n'ai pas su quoi modifier exactement pour que les opération de l'admin fonctionnent, sous le library on peu consulter la liste des client et des fournisseur, et sou le module admin j'ai mis les opération modifier supprimer et ajouter mai j'ai toujour la meme exception ! si je modifie le bootsrap alor l'acl ne fonctionne plu et j'ai un probleme d'authentification !

  6. #6
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    j'ai toujours ce message d'erreur :

    An error occurred
    message ?>
    Exception information:

    Message: exception->getMessage() ?>
    Stack trace:

    exception->getTraceAsString() ?>


    Request Parameters:

    request->getParams()) ?>

  7. #7
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Bonsoir,

    Ok donc tu as une arborescence modulaire, je suppose que tes ACLs sont sous cette forme :

    role => 'nom_du_role'
    ressource => module/controller
    privilège => actions

    Je suppose donc que tu as déjà :
    - Configuré le bootstrap
    - Le plugin d'authentification (vérifie le login/pseudo, crée une session via zend_auth, détermine la route de la requête)
    - Un fichier ACLs en .php ou en .ini

    Pour t'aider il va falloir nous montrer plus de code Celui que tu as posté n'affiche rien qui permet de savoir où se trouve ton problème.

    Donc :
    - As-tu activé l'affichage des erreurs en production dans l'application.ini ?
    - Montre nous ton bootstrap, ton plugin et tes ACLs (utilise la balise code => icone # dans l'éditeur).

    A+

  8. #8
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    ok just une minute, tu sais je suis tellemen bloqué que je pense à tout recommencer mainenan san architecture modulaire ! et le problème que j'ai plu le temp
    bref mon bootsrap est :

    <?php

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    private $_acl = null;

    protected function _initAutoload() {
    $modelLoader = new Zend_Application_Module_Autoloader(array(
    'namespace' => '',
    'basePath' => APPLICATION_PATH.'/modules/default'));

    if(Zend_Auth::getInstance()->hasIdentity()) {
    Zend_Registry::set('role', Zend_Auth::getInstance()->getStorage()->read()->role);
    } else {
    Zend_Registry::set('role', 'guests');
    }

    $this->_acl = new Model_LibraryAcl;
    $this->_auth = Zend_Auth::getInstance();

    $fc = Zend_Controller_Front::getInstance();
    $fc->registerPlugin(new Plugin_AccessCheck($this->_acl));

    return $modelLoader;
    }



    function _initViewHelpers() {
    $this->bootstrap('layout');
    $layout = $this->getResource('layout');
    $view = $layout->getView();

    $view->setHelperPath(APPLICATION_PATH.'/helpers', '');
    ZendX_JQuery::enableView($view);

    $view->doctype('HTML4_STRICT');
    $view->headMeta()->appendHttpEquiv('Content-type', 'text/html;charset=utf-8')
    ->appendName('description', 'Using view helpers in Zend_view');

    $view->headTitle()->setSeparator(' - ')
    ->headTitle('GESTECHAPP');

    $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
    $navContainer = new Zend_Navigation($navContainerConfig);

    $view->navigation($navContainer)->setAcl($this->_acl)->setRole(Zend_Registry::get('role'));
    }

    }

  9. #9
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    mon problème c'est que j'arrive pas à exécuter le code que j'écri dans le module admin ! car la consultation des tables sou le modele library et l'authentification fonctionne correctement, les role aussi et tou, mai quan je veut exécuter ce que j'écri sou le module admin ri1 ne fonctionne !

  10. #10
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut application.ini
    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
    [production]
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    includePaths.library = APPLICATION_PATH "/../library"
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.modules = ""
    resources.frontController.params.displayExceptions = 1 
     
    resources.layout.layoutpath = APPLICATION_PATH "/layouts"
     
    resources.db.adapter = PDO_MYSQL
    resources.db.isDefaultTableAdapter = true
    resources.db.params.host = localhost
    resources.db.params.username = root
    resources.db.params.password = ""
    resources.db.params.dbname = zf
     
     
     
    [staging : production]
     
    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1

  11. #11
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    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
    <?php
    class Model_LibraryAcl extends Zend_Acl {
        public function __construct() {
            $this->addRole(new Zend_Acl_Role('guests'));
            $this->addRole(new Zend_Acl_Role('users'), 'guests');
            $this->addRole(new Zend_Acl_Role('admins'), 'users');
     
    		$this->add(new Zend_Acl_Resource('library'))
    			 ->add(new Zend_Acl_Resource('library:clients'), 'library')
                             ->add(new Zend_Acl_Resource('library:fournisseurs'), 'library');
     
    		$this->add(new Zend_Acl_Resource('admin'))
    			 ->add(new Zend_Acl_Resource('admin:client'), 'admin')
    			 ->add(new Zend_Acl_Resource('admin:fournisseur'), 'admin');
    		$this->add(new Zend_Acl_Resource('default'))
    			 ->add(new Zend_Acl_Resource('default:authentication'), 'default')
    			 ->add(new Zend_Acl_Resource('default:index'), 'default')
    			 ->add(new Zend_Acl_Resource('default:error'), 'default');
     
    		$this->allow('guests', 'default:authentication', 'login');
    		$this->allow('guests', 'default:error', 'error');
     
    		$this->deny('users', 'default:authentication', 'login');
    		$this->allow('users', 'default:index', 'index');
    		$this->allow('users', 'default:authentication', 'logout');
    		$this->allow('users', 'library:clients', array('index', 'list'));
                    $this->allow('users', 'library:fournisseurs', array('index', 'liste'));
    		$this->allow('admins', 'admin:client', array('index', 'ajouter', 'modifier', 'supprimer'));
    		$this->allow('admins', 'admin:fournisseur', array('index', 'ajouter', 'modifier', 'supprimer'));
     
        }
    }

  12. #12
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    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
    <?php
    class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract {
     
        private $_acl = null;
     
        public function __construct(Zend_Acl $acl) {
            $this->_acl = $acl;
        }
     
        public function preDispatch(Zend_Controller_Request_Abstract $request) {
        	$module = $request->getModuleName();
            $resource = $request->getControllerName();
            $action = $request->getActionName();
     
            if(!$this->_acl->isAllowed(Zend_Registry::get('role'), $module.':'.$resource, $action)){
                $request->setControllerName('authentication')
                        ->setActionName('login');
            }
        }
    }

  13. #13
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Bonjour hooouuta,

    Alors, déjà je te propose d'afficher plus d'informations quand tu as une erreur :
    - Dans ton configuration.ini, passe les 0 des lignes 2 et 3 à 1.
    Cela te permettra sans doute de régler ton problème tout seul.
    (N'oublie pas de remettre le tout à 0 lorsque tu passeras l'application en production).

    - Pour ton boostrap, je ne vois rien à redire juste peut-être, comme tu utilises des view, ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($this->_acl);
    Ainsi les ACLs seront disponible dans les vues.

    - Pour tes ACLs proprement dit, ça me semble bon.
    - Pour le plugin, je ne fais pas comme toi, mais tu dis que c'est ok pour les autres modules (library et default donc).

    Citation Envoyé par hooouuta Voir le message
    mon problème c'est que j'arrive pas à exécuter le code que j'écri dans le module admin ! car la consultation des tables sou le modele library et l'authentification fonctionne correctement, les role aussi et tou, mai quan je veut exécuter ce que j'écri sou le module admin ri1 ne fonctionne !
    Donc le souci viendrait soit de tes ACLs, soit de ton plugin de vérification.
    Déjà, test avec l'affichage des erreurs à 1 dans le configuration.ini, tu pourras poster plus d'informations sur ton problème.

    Par défaut, les ACLs sont toutes refusées pour les roles.
    Donc dans la définition des ACLs, quand tu écris juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->allow('admins');
    Tu dis à l'application de donner TOUS les droits au rôle saisi en paramètre.
    Essai aussi de faire ça.

    A+

  14. #14
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    bof j'ai fait tout cela mai j'ai toujour la meme erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    An error occurred
    message ?>
    Exception information:
     
    Message: exception->getMessage() ?>
    Stack trace:
     
    exception->getTraceAsString() ?>
     
     
    Request Parameters:
     
    request->getParams()) ?>
    :/

  15. #15
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Je comprend pas pourquoi ton message d'erreur est vide. T'as aucune information, aucun stacktrace.

    Concrètement, ça te fais ce "message" quand tu exécute quel script ?

  16. #16
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut le fournisseur controller :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
     
    class Admin_Fournisseur_Controller extends Zend_Controller_Action
    {
     
        public function init()
        {
            /* Initialize action controller here */
        }
     
        public function indexAction()
        {
          $fournisseurssa= new Admin_Models_DbTable_Fournisseur();
          $this->view->clients = $fournisseurssa->fetchAll($fournisseurssa->select()->order('id DESC'));
        }
     
       public function modifierfour_Action()
        {
          if ($this->_hasParam('codef'))
               {
    		   $code_four = $this->_getParam('codef');}
    		     $fournisseurssa = new Admin_Models_DbTable_Fournisseur();
              	 $this->view->fournisseurssa =$fournisseurssa->obtenirtheme($code_four);
        }
     
        public function supprimerfour_Action()
        {
             if ($this->_hasParam('code_four') and $this->_hasParam('nom_four') )
                {
      		   $code_four = $this->_getParam('code_four');
    		   $nom_four = $this->_getParam('nom_four');
    		    }
                      else { $code_four='';$nom_four='';}
    		  $fournisseurssa= new Admin_Models_DbTable_Fournisseur();
    		 $this->view->fournisseur =$fournisseurssa->supprimer($code_four);
     
     
    			 $this->view->assign('nom_four',$nom_four);
    			   $fournisseurssa = new admin_Models_DbTable_Fournisseur();
                $this->view->supprimer = $fournisseurssa->fetchAll($fournisseurssa->select()->order('code_four DESC'));
     
     
      }
     
        public function ajouterfour_Action()
        {
            $code_four = $this->_getParam('code_four');
            $code_four = $this->_getParam('nom_four');
        $fournisseurssa= new Admin_Models_DbTable_Fournisseur();
        $this->view->fournisseurssa = $fournisseurssa->fetchAll($fournisseurssa->select()->order('codef DESC')); 
     
        }
    }

  17. #17
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut le model : sous DbTable sous model :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
    class Admin_Models_DbTable_Fournisseur extends Zend_Db_Table_Abstract
    {
        protected $_name = 'fournisseurssa'; 
     
     
     public function obtenirfour($code_four)
    	{
    	    $row = $this->fetchRow($this->select()->where('code_four = ?', $code_four));
                  if (!$row) {
                     echo "Impossible de trouver l'enregistrement".$code_four;
                }
     
    	      return $row;  
    	}
      public function ajouterfour($code_four, $nom_four)
    {
    $data = array(
    'codef' => $code_four,
    'nomf' => $nom_four,
    );
    if($this->insert($data))
    {
    return true;}
    else return false;
    }
     
     
     
    public function modifierfour($code_four, $nom_four)
    {
    $data = array(
    'codef' => $code_four,
    'nomf' => $nom_four,
    );
     
    if($this->update($data, 'codef = '. (int)$code_four))
    return true;
    else return false;
    } 
     
     
    public function supprimerfour($code_four)
    {if($this->delete('codef =' . (int)$code_four))
    return true;
    else return false;
    }
     
     
     
     
     
     
     
    }

  18. #18
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut la vu pour l'action ajouter :
    <p align="center">

    <b><font color="#0099FF" size="7">Ajout Fournisseur :
    </font></b> <br> <br>

    <p align="center"> <label><font color="#FF0000" size="2">Merci de remplir ce formulaire :</label></p>

    <br>

    <form name="form" action="<?php echo $this->url(array('modules'=>'admin','controller'=>'fournisseur','action'=>'ajouterfour'), null, true) ?>" method="post">

    <table style="width:850px;">
    <tr>
    <td align="center">

    <fieldset style="border-collapse: collapse; width:520px; padding: 0.5em;border: 1px solid #66CC00;">
    <legend><b><font color="#66CC00" size="4">Information :</font></b></legend>


    <table>

    <tr> <td><b><font color="#006600" size="2">Code *:</font></b></td>
    <td> <input name="code" type="text" id="code" /></td>
    </tr>
    <tr>
    <td><b><font color="#006600" size="2">Nom *:</font></b></td>
    <td> <input name="nom" type="text" id="nom" /></td>
    </tr>

    </table>

    </fieldset>
    <br>
    <br>
    <br>

    <tr>
    <td colspan="2" align="right"><label>
    <input name="reset" type="reset" id="reset" value="Annuler" />
    <input name="Submit" type="submit" id="Submit" value="Ajouter" />
    </label></td>
    </tr></table>
    </form>

  19. #19
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    voila toute l'application san le library
    Fichiers attachés Fichiers attachés

  20. #20
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    j'éspère que vous pouvez m'aider? merci infiniment

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [ZF 1.10] Zend Acl gestion des autorisations sur les actions
    Par gogololo dans le forum Zend Framework
    Réponses: 2
    Dernier message: 28/07/2010, 10h27
  2. Réponses: 0
    Dernier message: 03/11/2009, 10h24
  3. [ZF 1.7] utiliser Zend Layout dans mon application à l'exception d'1 PAGE
    Par MinaSenegal dans le forum MVC
    Réponses: 1
    Dernier message: 01/06/2009, 09h52
  4. hibernate with web application
    Par oughlad dans le forum Hibernate
    Réponses: 5
    Dernier message: 15/05/2006, 13h03

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