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 :

Utilisation de Zend_Acl


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1
    Par défaut Utilisation de Zend_Acl
    Bonsoir/Bonjour,

    Je débute avec le Zend Framework, et je me demandais comment, concrètement, utiliser le Zend_Acl... Je n'ai rien trouvé sur le web de complet sur le sujet.

    Est-ce le contrôleur, à partir du moment où l'on a défini les rôles et les accès, et les lui avoir donné, qui se charge de vérifier si un utilisateur a l'autorisation ou non d'accéder à une ressource (donc il redirige si non), ou alors faut-il coder ça soi-même ? (càd s'en servir comme une "base de donnée" et l'interroger)

    Et aussi, comment organise-ton ses fichiers dans le projet ?
    Chez moi c'est comme ceci :
    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
     
    application
    --default
    ----controllers
    ----layouts
    ----models
    ----views
    ------filters
    ------helpers
    ------scripts
    html
    --images
    --scripts
    --style
    library
    --Zend
    Je souhaite l'utiliser avec Zend_Auth, et le stocker dans une base de donnée avec un petit serialize(), et créer une interface de gestion pour ajouter/enlever des rôles ou des ressources puis les stocker sur la BD, pour ne pas avoir de truc hard-codé.

    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Par défaut
    +1 !!
    je debute plus ou moins avec ZF, j'ai fais le tour du web, lu tout ce que j'ai pu trouver, et j'en suis au meme point concernant zend_Acl
    J'ai le meme objectif que toi pour l'interface admin au final

    Bref merci a tous ceux qui peuvent nous aider !

  3. #3
    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
    La question étant récurente, et les explications pas clair, je vais tenter de vous expliquer(Je ferais peut-être un tuto la dessus).

    Soit la classe ACL suivante

    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
     
    <?php
     
    class Inuitech_Janitrix_Acl extends Zend_Acl
    {
     
        public function __construct()
        {
     
            $this->add(new Zend_Acl_Resource('index'));
            $this->add(new Zend_Acl_Resource('connexion'));
            $this->add(new Zend_Acl_Resource('inscription'));
            $this->add(new Zend_Acl_Resource('nouvelles'));
            $this->add(new Zend_Acl_Resource('cours'));
            $this->add(new Zend_Acl_Resource('videos'));
            $this->add(new Zend_Acl_Resource('contact'));
            $this->add(new Zend_Acl_Resource('administration'));
     
            $this->addRole(new Zend_Acl_Role('visiteur')); 
            $this->addRole(new Zend_Acl_Role('membre'), 'visiteur');
            $this->addRole(new Zend_Acl_Role('administrateur'));
     
            $this->allow('visiteur');
            $this->deny('visiteur', 'cours', 'commenter');
            $this->deny('visiteur', 'videos', 'commenter');
            $this->deny('visiteur', 'administration');
     
            $this->allow('membre');
            $this->deny('membre', 'administration');
            $this->deny('membre', 'inscription');
     
            $this->allow('administrateur');
     
        }
     
    }

    Bon on commence par le début

    Le nom de la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    class Inuitech_Janitrix_Acl extends Zend_Acl
    Cette étant construite par notre amis Janitrix, il lui à donné son nom.
    En suivant le sytème de convention Zf, on retrouveras normalement cette classe dans le répertoire /library/Inuitech/Janitrix/Acl.php

    La classe en elle même :

    Les ressources :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       $this->add(new Zend_Acl_Resource('index'));
            $this->add(new Zend_Acl_Resource('connexion'));
            $this->add(new Zend_Acl_Resource('inscription'));
            $this->add(new Zend_Acl_Resource('nouvelles'));
            $this->add(new Zend_Acl_Resource('cours'));
            $this->add(new Zend_Acl_Resource('videos'));
            $this->add(new Zend_Acl_Resource('contact'));
            $this->add(new Zend_Acl_Resource('administration'));
    Ici , nous créons tout les contrôleurs existant dans l'application, ce qui noius donnes les ressources de l'application.

    Donc 'contact', correspônd à contactController.php et ainsi de suite.

    Les rôles :

    Quand vous vous connecté à un site, vous avez généralement un statut, visiteur, amis, administrateur et bien dans les ACL c'est la même chose, il faut définir des statut ayant accès à l'application.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     $this->addRole(new Zend_Acl_Role('visiteur')); 
     $this->addRole(new Zend_Acl_Role('membre'), 'visiteur');
     $this->addRole(new Zend_Acl_Role('administrateur'));
    Ici trois statut

    Visiteur
    membre qui hérite des droits de visiteur
    administrateur qui hérite des droits de membre

    Et enfin on donne les accès à l'application


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $this->allow('visiteur'); 
            $this->deny('visiteur', 'cours', 'commenter');
            $this->deny('visiteur', 'videos', 'commenter');
            $this->deny('visiteur', 'administration');
    Alors ici on à 4 lignes pour visiteur :
    1 : on donne accès à tout pour visiteur(avant de restreindre).
    2 : On interdit à 'visiteur' de pouvoir utiliser l'action 'commenter' du controller 'cours'
    3 : On interdit à 'visiteur' de pouvoir utiliser l'action 'commenter' du controller 'videos'

    4 : On interdit à 'visiteur' de pouvoir utiliser le controller 'administration'

    Il en va de suite pour le reste des utilisateur.

    Avez vous compris le principe ?

    Attention, ensuite il faut mettre un plugins en place.

    Voir ici pour le plugin de Janitrix

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Par défaut
    merci pour cette réponse détaillé ! c'est top pour comprendre

    Par contre je ne comprend pas comment mettre en base de donnée les droits de façon a ce que l'on puisse avoir une interface admin pour en crée des nouveaux ou en supprimer.

    la gestion d'une table, avec ajout , edition, suppresion; j'ai bien pigé par contre pour lié le tout avec acl,

    merci pour ton aide et le p'tit lien vers l'autre post !

  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
    Tu es donc capable, de créer un petit formulaire Login-password, et tu as une table reprenant tes user, leurs mot de passe et leur statut (EX: visiteur - membre - administrateur)?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Par défaut
    oui, apres avoir suivie ce tuto
    http://akrabat.com/2008/03/17/update...-framework-15/

    je suis parti plus/moins sur ce model et j'ai maintenant un table de ce style
    (`ID`, `username`, `password`, `email`, `registered`, `last_visit`, `status`, `display_name`) où je crée, modif, et efface a souhait

    Graphiste a la base, le model mvc ne m'est pas inconnu grace a l'actionscript 2/3 mais mes connaissances en php et sql reste tres limiter et j'apprend petit a petit

Discussions similaires

  1. [ZF 1.10] Utilisation de Zend_Acl
    Par ESTYOUNES2008 dans le forum Zend_Acl & Zend_Auth
    Réponses: 2
    Dernier message: 11/05/2010, 15h15
  2. [ZF 1.7] Utilisation de Zend_Acl
    Par KiMbOoO dans le forum Zend_Acl & Zend_Auth
    Réponses: 2
    Dernier message: 19/02/2009, 13h56
  3. Utilisation de Zend_Acl et Zend_Auth
    Par k o D dans le forum Zend_Acl & Zend_Auth
    Réponses: 10
    Dernier message: 02/10/2008, 14h28
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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