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 :

Structuration et mise en place d'une ACL


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 132
    Par défaut Structuration et mise en place d'une ACL
    Je réalise un site qui va identifié 5 rôles.
    1 - guest
    2 - author
    4 - editor
    5 - admin

    Chaque role est prédéfini dans une BDD pour une ressource particulière (un blog)
    J'ai donc quelques choses du genre dans ma table :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    id_user    | id_blog   | role
     2         |     3     |  editor
     5         |     9     |  author

    L'editeur est le créateur du blog, il peut ensuite accepter des utilisateurs qui aurait postulés en tant qu'auteur.

    L'un comme l'autre a des droits qui lui sont propres en fonction de son rôle.

    L'admin peut quand à lui tout controller.

    Les auteurs comme les éditeurs peut avoir accès à plusieurs blog, avec des roles identiques ou différents mais propre au blog en question.

    Pour l'invité (guest) pas de trop de problème a priori.

    Ma question est donc la suivante, j'ai un peu de mal à trouver une solution satisfaisante à la structure de mon ACL

    Je n'ai pas très envie de vérifier celle ci pour chaque action, alors j'ai étendu la classe Zend_Controller_Plugin_Abstract pour surcharger la méthode preDispatch() qui se charge donc de vérifier si :
    1. L'utilisateur est authentifié
    2. L'utilisateur a accès à la ressource (en l'occurrence l'action)


    Mes roles je l'ai défini ainsi :
    Controller_Action
    Par exemple : Blog_Editer ou Utilisateur_Profile
    Dans preDispatch je récupère ensuite ces informations pour construire le nom de ma ressource et la comparer avec celles existentes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $resource = ucfirst($request->getControllerName()) . '_' . ucfirst($request->getActionName());

    A priori sa fonctionne bien pour la majorité des cas mais avec cette méthode il n'y aucune différence entre l'editeur d'un blog A et l'éditeur d'un blog B, je pensais utiliser les assertions fournis par Zend_Acl_Assert_Interface pour parvenir à ce résultat, mais je me demandais s'il s'agissait d'une méthode judicieuse, en effet je débute en programmation objet ainsi qu'avec ZF, mais j'ai tout de même le soucis de faire quelques choses de cohérents.

    Merci donc d'avance de vos conseils

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par SPKlls Voir le message
    A priori sa fonctionne bien pour la majorité des cas mais avec cette méthode il n'y aucune différence entre l'editeur d'un blog A et l'éditeur d'un blog B, je pensais utiliser les assertions fournis par Zend_Acl_Assert_Interface pour parvenir à ce résultat, mais je me demandais s'il s'agissait d'une méthode judicieuse, en effet je débute en programmation objet ainsi qu'avec ZF, mais j'ai tout de même le soucis de faire quelques choses de cohérents.
    Bonjour,

    Je pense en effet que l'utilisation d'une assertion est judicieuse dans ce cas.

    Si tu as commencé à la coder, je serais intéressé d'en voir le résultat

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 132
    Par défaut
    Très bien, dès que je me remets à travailler sur les ACLs, je poste un peu de mon code ici, en attendant, j'avais travaillé sur autre chose

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    Pareillement intéressé de voir comment utiliser ces assertions.

    Personnellement, j'ai mis en place les ACL principalement pour le contrôle d'accès aux modules / contrôleurs / actions comme je l'explique dans un p'tit tutorial sur Zend Auth et Zend Acl.

    Mais plus tard, quand vient la nécessité de vérifier si tel utilisateur a accès à tel objet de ma base de données alors j'utilise des aides d'action ou de vue de type Helper_Object->isAllowed($object_id, $action). La méthode me retourne true ou false et c'est tout. Je récupère l'id de l'utilisation directement dans la méthode grâce à Zend_Auth.

    Le contrôle est fait après le dispatching forcément. Les aides de vue de ce type sont principalement utilisées pour afficher ou non des liens dans la vue.

    Bon après, pour le peu que je connaisse les assertions, la méthode isAllowed peut peut être en utiliser afin de renvoyer sa réponse.

Discussions similaires

  1. [Structure de données] Aide pour mise en place d'une structure de donnée
    Par HqSeO dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 28/06/2010, 17h05
  2. [Apache] Mise en place d'une page de maintenance
    Par divail dans le forum Apache
    Réponses: 5
    Dernier message: 02/02/2006, 09h58
  3. Réponses: 2
    Dernier message: 06/10/2005, 16h10
  4. Mise en place d'une solution Data Guard 9i R2
    Par user_oracle dans le forum Oracle
    Réponses: 4
    Dernier message: 16/02/2005, 10h12
  5. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 09h23

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