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 :

Problème de reconnaissance de Plugin ACL


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Par défaut Problème de reconnaissance de Plugin ACL
    Bonjour,
    je rouvre un nouveau sujet, à cause d'un nouveau problème.

    j'utilise un plugin pour le contrôle des droits d'accès, mais je me retrouve avec cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Class 'Default_Controller_Plugin_Acl' not found in /var/www/trinis.fourmi-tek.org/application/Bootstrap.php on line 37
    mon architecture est construit de cette façon, peut être es-ce une erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    --Application
         -Controllers
           -Authcontroller.php
         -Acls
            -MyAcl.php
         -Plugins
             -Acl.php
    ....
    Le code de mon Plugin :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    <?php
    class Default_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
    {
    	//tableau associatif reprenant les infos utilisées pour le lien
    	//si l'utilisateur n'est pas authentifié
    	private $_noauth = array(
    		'module' => 'default',
    		'controller' => 'login',
    		'action' => 'index'
    	);
     
    	//tableau associatif reprenant les infos utilisées pour le lien
    	//si l'utilisateur est authentifié mais qu'il n'a pas les droits d'accès
    	private $_noacl = array(
    		'module' => 'default',
    		'controller' => 'error',
    		'action' => 'deny'
    	);
     
    	//la méthode événementielle preDispatch(), définie par ZF, est exécutée
    	//avant qu'une action ne soit distribuée
    	public function preDispatch(Zend_Controller_Request_Abstract $request)
    	{
    		$acl = null;
    		$role = null;
     
    		//vérification de l'enregistrement de l'ACL (cf. application/acls/MyAcl.php)
    		if(Zend_Registry::isRegistered('My_Acl'))
    		{
    			//récupération de l'ACL
    			$acl = Zend_Registry::get('My_Acl');
    		}
    		else
    		{
    			throw new Zend_Controller_Exception("Acl not defined !");
    		}
     
    		//récupération de l'instance d'identification
    		//la classe Zend_Auth permet de définir les adaptateurs d'authentification
    		//un adpatateur permet de définir le service d'authentification,
    		//dans notre cas, une base de données
    		$auth = Zend_Auth::getInstance();
     
    		//permet de vérifier si une identité est correctement identifiée
    		if($auth->hasIdentity())
    		{
    			//récupération du role (via la database)
    			$role = $auth->getIdentity()->role;
    		}
    		else
    		{
    			//si l'utilisateur n'est pas authentifié
    			//on définit le rôle par défaut, guest
    			$role = 'guest';
    		}
     
    		//récupération du module, contrôleur et action demandés par la requête
    		//comme nous avons utilisé les contrôleurs comme ressource,
    		//nous stockons le contrôleur demandé dans la requête dans la variable $ressource
    		$module = $request->getModuleName();
    		$controller = $ressource = $request->getControllerName();
    		$action = $request->getActionName();
     
    		//vérification que le contrôleur est définit dans l'ACL
    		if(!$acl->has($controller))
    		{
    			$ressource = null;
    		}
     
    		//si l'accès n'est pas permis, nous allons modifier la requête
    		//en modifiant le module, le contrôleur et l'action
    		if(!$acl->isAllowed($role, $ressource, $action))
    		{
    			//si pas authentifié
    			if(!$auth->hasIdentity())
    			{
    				//$request->setParam('redirect', $module . '/' . $controller . '/' . $action);
    				$module = $this->_noauth['module'];
    				$controller = $this->_noauth['controller'];
    				$action = $this->_noauth['action'];
    			}
    			else
    			{
    				//si pas autorisé
    				$module = $this->_noacl['module'];
    				$controller = $this->_noacl['controller'];
    				$action = $this->_noacl['action'];
    			}
    		}
     
    		//définition des du module, du contrôleur et de l'action
    		//qui sera ùaintenant routée
    		//$request->setModuleName($module);
    		$request->setControllerName($controller);
    		$request->setActionName($action);
    	}
    }
    Le code de mon bootstrap :
    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
     
    <?php
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
     
    	protected function _initDoctype()
    	{
    		$this->bootstrap('view');
    		$view = $this->getResource('view');
    		$view->doctype('XHTML1_STRICT');
    	}
     
    	protected function _initAutoloadRessource()
    	{
    		//configuration de l'Autoload
    		$ressourceLoader = new Zend_Loader_Autoloader_Resource(array(
    			'namespace' => 'Default',
    			'basePath'  => dirname(__FILE__),
    		));
     
    		//permet d'indiquer les répertoires dans lesquels se trouveront nos classes:
    		//notamment, l'ACL et le pugin
    		$ressourceLoader->addResourceType('form', 'forms/', 'Form')
    		->addResourceType('acl', 'acls/', 'Acl')
    		->addResourceType('model', 'models/', 'Model')
    		->addResourceType('plugin', 'plugins/', 'Controller_Plugin');
     
    		return $ressourceLoader;
    	}
     
    	protected function _initAcl()
    	{
    		//Création d'une instance de notre ACL
    		$acl = new Default_Acl_MyAcl();
     
    		//enregistrement du plugin de manière à ce qu'il soit exécuté
    		Zend_Controller_Front::getInstance()->registerPlugin(new Default_Controller_Plugin_Acl());
     
    		//permet de définir l'acl par défaut à l'aide de vue, de cette manière
    		//l'ACL est accessible dans les vues
    		Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($acl);
     
    		//vérifie si une identité existe et applique le rôle
    		$auth = Zend_Auth::getInstance();
    		$role = (!$auth->hasIdentity()) ? 'guest' : $auth->getIdentity()->role;
    	}
    }
    Merci de votre aide,
    cordialement,
    chocofusee,

    PS : Merci de m'indiquer si je fait du double poste.

  2. #2
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Bonsoir,
    Généralement les plugins sont mis dans le dossier library ou tu crée ta propre librairie et tu fais comme pour la librairie Zend.

    Sinon vu où tu as mis ton fichier ça devrait etre :
    ou
    Du coup il faut que tu modifies le nom et de la classe ainsi que les appels

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Par défaut
    donc faudrait que je fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    --library
        --Plugins
          --acl.php
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    --library
     --Zend
        --Plugins
          --acl.php

  4. #4
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Comme ton deuxieme exemple mais pas Zend faut que ca soit ta library et le nom de tes fichier commencerons par ce nom comme pour Zend

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Par défaut
    Merci, sa marche parfaitement.
    Par contre j'ai un nouveau problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Trying to get property of non-object in /var/www/trinis.fourmi-tek.org/application/Bootstrap.php on line 46 Notice: Trying to get property of non-object in /var/www/trinis.fourmi-tek.org/application/Plugins/acls/Myacl.php on line 48

  6. #6
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Fais nous voir le code de Myacl.php

Discussions similaires

  1. [Plugin][VE] Problème d'installation du plugin Visual Editor
    Par bigben09 dans le forum Eclipse Java
    Réponses: 13
    Dernier message: 15/11/2007, 22h03
  2. problème d'importation de plugin
    Par legolas38 dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 17/05/2006, 17h21
  3. Problème de reconnaissance javascript vbscript
    Par mouste79 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/05/2006, 19h12
  4. [Plugin] problème d'utilisation de plugin
    Par seiryujay dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 24/03/2006, 11h53
  5. [FLASH MX2004] Problème de reconnaissance des caractères
    Par Spikefreeman dans le forum Flash
    Réponses: 10
    Dernier message: 04/01/2005, 23h08

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