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 :

Formulaire de connexion affiché plusieurs fois


Sujet :

Autres composants PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 30
    Points
    30
    Par défaut [Résolu] Formulaire de connexion affiché plusieurs fois
    Salut tout le monde,

    J'ai crée un site qui contient 3 layout (division).

    La partie gestion des utilisateur (localhost/user/) ne peut etre acceder que par l administrateur sinon l'utilisateur sera rediriger vers le form login

    et comme j utilise les layout le form login est affiché 3 fois (le nombre de layout)

    Y'a t il des idées pour éviter ce problème ?


    Merci

    Remarque :


    La redirection se fait comme suit dans le predispatch :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     // the action to dispatch if a user doesn't have sufficient privileges
            private $_authController = array('controller' => 'user',
                                             'action' => 'login');
     
      // access denied - reroute the request to the default action handler
                if (!$this->acl->isAllowed($role, $resource, $privilege))
                {
                    $request->setControllerName($this->_authController['controller']);
                    $request->setActionName($this->_authController['action']);
     
                }

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Je n'ai pas tout saisi je pense.

    Pourquoi utilises-tu 3 layouts ? Tu utilises des modules ?
    Comment sont initialisés ces layouts ?

    Si tu utilises directement l'adresse de ta page de login (pour éviter la redirection : user/login/), est-ce que ton formulaire apparait toujours 3 fois ? Si oui, alors ça n'a rien à voir avec la redirection (et je pense que c'est le cas).

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 30
    Points
    30
    Par défaut
    Merci bcp pour ta reponse Eusebe

    J'explique plus :


    Dans mon bootstrap j'ai ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Zend_Layout::startMvc($config->layout);
    $actionStack = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack');
    $actionStack->actionToStack('footer','index');
    $actionStack->actionToStack('header','index');
    $actionStack->actionToStack('gauche','index');
    mais lorque l'utilisateur accede à une paartie du site qui n'est pas public

    Le prédispatch le redirige vers la page login

    => il est redériger 3 fois => il affiche 3 fois la page login

    Qui a une solution à ce problème ?

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Alors en fait tu n'utilises par trois layouts, mais ton layout utilise 3 actions pour l'affichage de l'en-tête, du pied de page et de la partie gauche.

    Quand tu dis que tu as 3 fois la page login, tu veux dire une fois à la place de l'en-tête, une fois à la place du pied de page et une fois à gauche ?

    Si oui, c'est que tes utilisateurs sont redirigés pour ces 3 actions...

    Comment gères-tu les droits et la redirection ? C'est fait dans un plugin, une aide d'action ? Peux-tu nous montrer le code correspondant ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 30
    Points
    30
    Par défaut
    merci pour ton aide

    Le form login est affiché 3 fois dans le cadre content
    J'utilise un plugin qui gere les droit d'acces (une class CustomControllerAclManager qui extends Zend_Controller_Plugin_Abstract).
    voila le code de predispatch qui verifie les acces et fait la redirection :


    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
     
     
    public function preDispatch(Zend_Controller_Request_Abstract $request)
            {
                // check if a user is logged in and has a valid role,
                // otherwise, assign them the default role (guest)
                if ($this->auth->hasIdentity())
                {
     
                //echo "login avec succes";
                $data = $this->auth->getStorage()->read();
                $role = $data->type;
                Zend_Registry::set('currentuser', $data);
                }
                else
                {
                    $role = $this->_defaultRole;
                }
     
                if (!$this->acl->hasRole($role))
                    $role = $this->_defaultRole;
     
                // the ACL resource is the requested controller name
                $resource = $request->controller;
     
                // the ACL privilege is the requested action name
                $privilege = $request->action;
     
                // if we haven't explicitly added the resource, check
                // the default global permissions
                if (!$this->acl->has($resource))
                    $resource = null;
     
                // access denied - reroute the request to the default action handler
                if (!$this->acl->isAllowed($role, $resource, $privilege))
                {
                    echo $this->_request->getParam('');
                    $request->setControllerName($this->_authController['controller']);
                    $request->setActionName($this->_authController['action']);
     
                }
     
     
            }

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Points : 230
    Points
    230
    Par défaut
    Hello,

    Je crois que maintenant c'est confirmer :
    1. tu mets 3 actions dans la pile d'execution MVC
    2. pour chacune de ces actions Zend_Controller_Front appelle le preDispatch des plug-in, donc, celui de gestion des droits aussi
    3. a chaque fois, le plug-in détecte que tu n'as pas les droit et manipule la requete courante en changeant le controller et l'action

    Il est donc normal que tu aboutisses à afficher 3 fois le loginn c'est à dire autant de fois que tu exécute une action ça n'a rien a voir avec le layout

    Les solutions possibles sont multiples mais une piste à mon avis serait d'executer la vérification des droits avant d'entrer dans la dispatchLoop, c'est à dire de modifier ton plug-in pour faire son travail en dispartchLoopStartUp

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par patbator Voir le message
    Hello,
    Les solutions possibles sont multiples mais une piste à mon avis serait d'executer la vérification des droits avant d'entrer dans la dispatchLoop, c'est à dire de modifier ton plug-in pour faire son travail en dispartchLoopStartUp
    Ok je vais la tester merci bcp

  8. #8
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bizarre qu'il n'y ait que trois fois le formulaire. Il me semble qu'il devrait y en avoir 4 : un pour la page demandée, et un de plus par action ajoutée.

    Mais si c'est bien ça, il suffit de définir dans tes acl que tout le monde a le droit d'accéder aux actions footer, header et gauche...

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    Bizarre qu'il n'y ait que trois fois le formulaire. Il me semble qu'il devrait y en avoir 4 : un pour la page demandée, et un de plus par action ajoutée.

    Mais si c'est bien ça, il suffit de définir dans tes acl que tout le monde a le droit d'accéder aux actions footer, header et gauche...
    c'est vrai ce que vous dites

    et encore une tres bonne idée

    merci

Discussions similaires

  1. [2.x] Afficher plusieurs fois un même formulaire dans un template.
    Par apprentiDev dans le forum Symfony
    Réponses: 2
    Dernier message: 01/01/2015, 21h31
  2. [ZF 1.10] Formulaire de login dans le layout affiché plusieurs fois
    Par ilalaina dans le forum Zend_Form
    Réponses: 0
    Dernier message: 31/05/2010, 15h17
  3. Crosstab s'affiche plusieurs fois
    Par soumou dans le forum iReport
    Réponses: 9
    Dernier message: 23/09/2008, 00h57
  4. [FLASH 8] Afficher plusieurs fois le même clip
    Par Devil Shark dans le forum Flash
    Réponses: 16
    Dernier message: 27/02/2007, 08h07
  5. Réponses: 11
    Dernier message: 27/06/2006, 15h05

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