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

Symfony PHP Discussion :

[AdminGen] Afficher les actions selon les permissions


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Points : 81
    Points
    81
    Par défaut [AdminGen] Afficher les actions selon les permissions
    Bonjour,

    Vous savez probablement qu'un utilisateur ne peut pas avoir accès à une fonction (exemple : edit) du module s'il n'a pas l'accès dans le security.yml de l'admin generator; s'il tente d'y accéder, il aura un message lui disant qu'il n'a pas la permission.

    Cependant je voudrais réagir davantage en amont, et n'afficher le bouton d'action (exemple : le petit crayon pour la modification) que si l'utilisateur a le droit de le faire.

    Comment puis-je faire ?

    J'ai déjà commencé à trifouiller les "partials" mais je n'arrive pas à accéder aux permissions définies dans le security.yml.

    Est ce que je m'y prend de la bonne manière ou vaudrait-il mieux passer par un CRUD (mais je perd les filtres et la pagination).

    J'ai posté sur le forum de symfony mais pas de réponse ... :/

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Tu pourrais récupérer le partial qui affiche ce bouton. Il se trouve dans le cache, le copier dans ton module dans les views et y ajouter la condition d'affichage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      <?php if ($sf_user->hasCredential('admin')): ?>
      //Affiche bouton
      <?php endif; ?>

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Points : 81
    Points
    81
    Par défaut
    Ça ce n'est pas un problème, je l'ai déjà fait et je peux modifier les boutons des actions relativement facilement. (en fait j'arrive à le configurer depuis l'action).

    Le problème, c'est que je veux que les permissions soient lues dans le security.yml et non en dur (pour que ça soit dynamique et facilement redéployable à d'autres modules).

    Ce qui donnerait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php if ($sf_user->hasCredential(permission_du_security.yml_pour_l_action("edit"))): ?>
      //Affiche bouton
      <?php endif; ?>
    Tu vois?

    Alors vu que c'est un peu le bordel à configurer (j'ai du modifier les fichiers actions.class.php, _list_td_actions.php et _list.php), je me suis dit qu'il fallait peut être passer par un CRUD, mais j'ai je perd tous les filtres et la pagination que je dois refaire ensuite :/

    Parce que là si j'arrive à trouver comment faire, je n'ai plus qu'à surcharger les classes du générateur et c'est bon pour tous les modules

    Suis-je compris ?

    Merci.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Je ne suis pas sur de bien comprendre, pourquoi n'ajoutes-tu pas le droit "edit" a tes utilisateurs. Tu pourrais te passer de security.yml ca serait plus simple.

    A moins que le maillage de tes droits est plus complexe. Si le meme utilisateur peut-etre editeur et sur une page et juste viewer sur une autre. Ca se complique.

    A ta place je multiplirais le type d'utilisateur et les droits via sfGuard par example plutot que de faire du Crud.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par batataw Voir le message
    A moins que le maillage de tes droits est plus complexe. Si le meme utilisateur peut-etre editeur et sur une page et juste viewer sur une autre. Ca se complique.
    Oui c'est ça, un utilisateur peut être "ajouteur" sur un module, mais pas sur un autre.
    Voici un exemple du fichier security.yml d'un module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    new:
      credentials: admin
     
    edit:
      credentials: admin
     
    list:
      credentials: [[ admin, avance, basique ]]
    Il nous informe que pour ajouter et éditer, il faut avoir la permission "admin". Et ça, ce n'est valable que pour un module. Pour un autre module, le security.yml peut être différent.

    A ta place je multiplirais le type d'utilisateur et les droits via sfGuard par example plutot que de faire du Crud.
    Que veux-tu dire par là ? J'ai du mal à comprendre...

    Petit rappel du souci :
    Le problème, c'est que si l'utilisateur ayant la permission "basique" consulte la page qui liste des objets d'un module, le bouton "modifier" est affiché, mais s'il clique dessus ce sera interdit (avec le message l'informant qu'il n'a pas le droit, en anglais). Je souhaiterais que ce soit davantage en aval, et que le bouton ne soit affiché que si l'utilisateur ait le droit pour le faire.

    Par ailleurs, je voudrais garder l'utilité du security.yml qui permet de gérér les droits sans avoir à s'y connaitre en programmation.

    Merci.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut SfGuard plugin
    Okay, je vois.

    Dans un premier temps tu dois identifier tous les droits en fonction de chaque utilisateur.
    -edit_news (admin, avance)
    -edit_blog (admin, avance, basique)
    -edit_user (admin)


    Puis paramétrer ces droits via sfGuard, ce plugin est parfait pour ce que tu veux faire. Tout ce fait a travers une interface web. Tu pourras enlever/ajouter un droit facilement.
    http://www.symfony-project.org/plugins/sfGuardPlugin
    http://www.symfony-project.org/plugi...ineGuardPlugin

    Et pour finir ajouter les droits dans tes fichiers security.yml pour les utilisateurs comme tu l'as fait et ajouter les permissions sur les boutons grace au partial comme tu l'as aussi fait.

Discussions similaires

  1. Afficher des valeurs selon les colonnes
    Par valmelissa dans le forum Oracle
    Réponses: 6
    Dernier message: 05/10/2012, 16h53
  2. Réponses: 18
    Dernier message: 09/12/2010, 21h40
  3. Réponses: 2
    Dernier message: 09/01/2008, 12h43
  4. [Requete action]selon les critères de 2 champs, en modifié 1
    Par Nicko29 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/11/2005, 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