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

Autres composants PHP Discussion :

Plugin view ? [ZF 1.8]


Sujet :

Autres composants PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut Plugin view ?
    Bonjour,

    Je découvre ZF depuis une semaine à peine. J'ai appris que l'on pouvais créer un plugin qui permet de gérer la base de la redirection.

    Exemple :
    je ne suis pas connecté, je ne peux pas accéder à d'autres page que la page login. Et si je suis connecté, je ne peux pas accéder à la page login.

    Mon problème n'est pas là, puisque j'y suis arrivé.

    Du coup, maintenant que je peux me connecter et déconnecter, je me suis dit qu'il serait bien de pouvoir trimbaler les informations de l'utilisateur connecté sur l'ensemble des pages, sans rappeler les informations dans chaque méthodes init de chaque module.

    Mais je ne vois pas du tout comment créer ce plugin. J'ai essayé de le mettre dans le plugin qui permet d'authentification en faisait très grossièrement un code de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->view->user = Zend_Auth::getInstance()->getIdentity();
    Qui est bien sur sans grand succès. Est-ce que vous voyez ce que je souhaite faire ?

    J'ai lu plusieurs tuto et la docs de ZF mais je dois avouer que c'est encore un peux flou pour moi.

    Pouvez-vous me donner quelques conseils ou me donner des pistes ?

    Merci d'avance

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    c'est de ACL et AUTH que tu as besoin

    Ici pour le tuto

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Merci pour ce lien .

    Pas tout compris (au niveau du code), mais les explications sont claires. Je passe des heures sur vos tutos, et on découvre de nouveaux tutos encore et encore et ...

    Par contre, je comprends bien que ACL est un gestionnaire de permissions. Mais je ne vois pas comment il peut passer les infos de l'utilisateur.

    Actuellement, j'ai créé ce code qui reprend d'ailleurs une partie du tuto mais sans l'acl.

    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
     
    class Plugin_Auth extends Zend_Controller_Plugin_Abstract
    {
    	private $_auth;
     
    	private $_noAuth = array(	'module' => 'panel',
    		                                'controller' => 'login',
            					'action'=> 'index'
            									 );
     
    	public function __construct ( $auth )
    	{
    		$this->_auth = $auth;
    	}
     
      public function preDispatch( Zend_Controller_Request_Abstract $request )
      {
      	$controller = $request->controller;
      	$action 		= $request->action;
      	$module 		= $request->module;
     
        if ( $request->getControllerName ( ) != 'login' )
        {
        	if ( !$this->_auth->hasIdentity ( ) )
        	{
        		$module 		= $this->_noAuth['module'];
        		$controller = $this->_noAuth['controller'];
        		$action 		= $this->_noAuth['action'];
        	}
        	else
        	{
        		$module 		= 'panel';
        		$controller = 'index';
        		$action 		= 'index';
        	}
        }
        elseif ( $request->getControllerName ( ) == 'login' )
        {
        	if ( $this->_auth->hasIdentity ( ) )
        	{
        		$this->_response->setRedirect('/');
        	}
        }
     
        	$request->setModuleName ( $module );
        	$request->setControllerName ( $controller );
        	$request->setActionName ( $action );
     
      }
    }
    Mais si je comprends bien, le predispatch est une "action" qui se déroule avant la redirection !?

    Alors dans quel mesure je pourrais faire passer mes paramètres. Puisque dans le tuto précédent, dans le plugin auth, les seules lignes qui font référence à acl
    sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            if ($this->_auth->hasIdentity()) {
                $role = $this->_auth->getIdentity()->getUser()->role;
            } else {
                $role = 'guest';
            }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       if (!$this->_acl->has($resource)) {
            $resource = null;
        }
     
            if (!$this->_acl->isAllowed($role, $resource, $action)) { ...
    Je n'arrive pas saisir ou les paramètres de l'utilisateur sont passés ?

    Par exemple, dans code de vue, je souhaite faire afficher le nom de l'user (un truc tout bête, mais qui pose problème). Pour le moment j'ai fait une ligne de code comme celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->user->username ?>
    Qui reprend les éléments de la méthode init du controller (se que je souhaite "automatiser" dans la prog) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->view->user = les infos de l'user
    Comment Acl peut me permettre de gérer ceci alors qu'il gère les permissions (Je met en doute vos compétences mais je n'arrive pas à faire se rapprochement).


    Pouvez-vous m'éclairer ? Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 47
    Par défaut
    Si tu veux propager une données dans tous tes controlleurs d'actions, tu peux faire un plugin pour le controlleur frontal, qui mettra la donnée dans le registre

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Lis ce post et regarde comment Janitrix si prend, il crée une classe qui gére les Acl, puis il fait un plugin qui propage l'ensemble des données.

    Ici pour le post

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Merci pour vos aides et je vais lire tout cela. D'ailleurs registry est une bonne alternative aussi

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

Discussions similaires

  1. [Plugin views] Intégration de code Swing
    Par ellipse2v dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 08/03/2011, 14h21
  2. creation plugin view et editeur sous eclipse
    Par dupond59 dans le forum Langage
    Réponses: 0
    Dernier message: 22/01/2010, 22h39
  3. [Plugin][View][TreeView] Création d'une vue.
    Par bitou dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 20/11/2007, 12h57
  4. Eclipse : utiliser une DLL avec un plugin view
    Par cloporte dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 04/09/2007, 09h36
  5. Réponses: 1
    Dernier message: 14/08/2007, 17h53

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