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

Plugins PHP Discussion :

question


Sujet :

Plugins PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 22
    Points
    22
    Par défaut question
    Bonjour

    J'utilise Sfguard pour mes applications symfony. Tout se passe bien mais je voudrais aller plus loin et donc j'ai qques questions plus précises.

    Premièrement, je voulais savoir si il est possible de se logger via une page en frontend differente de celle du backend ? je m'explique

    Backend = admin et on se connecte via une page login/password.
    Frontend = site normal avec possibilité de se log comme tout site en haut à droite :-).

    Ensuite la gestion des droits comment faite vous dans un template pour récuperer les droits d'un user ?

    Merci à vous tous
    Phoelis

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Finalement j'arrive à me loguer via le frontent différemment.

    Par contre pls si une personne pouvait m'expliquer clairement comment reprendre les droits du user dans les templates...

    merci

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    encore moi :-), je continue a me plonger sur ce plugin et je vais en profiter aussi pour dire ce que j'ai découvert.

    Reprenons, le Plugin SFguard est facilement installable, (voir doc du plugin) celui ci permet facilement si on suit les instructions de se logger et logout.
    Ce qui est agréable c est que de n'importe ou on peut savoir si un user est bien authentifié ou pas

    via les templates
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ($sf_user->isAuthenticated())
    { //vous etes bien authentifié}
    else
    { // c est mal ;-) }
    On continue, ensuite SFguard vient avec une possibilité de mettre des users dans des groupes (Administrateurs, VIP, clients) par exemple. J'ai pas mal chercher a comprendre comment ressortir le groupe du user authentifié...

    J'ai pas encore trouvé la solution optimale je pense mais j'ai déjà compris qu'un user pouvait appartenir à plusieurs groupes et donc que nous pouvions ressortir la liste (on appelle cela les crédentials et c est un ARRAY)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ($sf_user->hasCredential('admin')){ //il a la permission admin... }
     
        // a 2 permissions
        $sf_user->hasCredential(array('admin', 'vip'));
     
        //Appartient l'une des 2 permissions
       $sf_user->hasCredential(array('admin', 'vip'), false);
    bon je continue, et si je trouve d'autres points je ne manquerai pas de compléter en espérant que ca aide d'autres personnes dans mon cas :-)

    Phoelis

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    Oui je sais je dois etre fou de répondre à moi meme mais depuis j'ai du replonger et enfin réussi à trouver les groupes et me dis que cela peut aider.

    Pour avoir acces à un groupe dans le template on fait appel à une fonction existante :

    $sf_guard_user->getGroups()

    Cette fonction me retourne un array... Soit on loop dessus afin de retrouver tous les groupes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($sf_guard_user->getGroups() as $mygroup)
    	{
     	echo $mygroup;
    	}
    Soit on emploie la fonction PHP in_array() pour savoir si il appartient à ce groupe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (in_array("client", $sf_guard_user->getGroups())) {
        echo "il appartient au groupe client";
    }

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    Bonjour je relance ce topic car moi même du soucis à le cerné.

    Donc voila comme toi j'arrive à le faire fonctionner en backend... Et comme toi j'aimerai travailler avec le frontend (position en haut à droite ou autre part)... Mais aussi j'aimerai que certaine page soit visible par tout le monde et d'autre non.

    Donc comment faire pour différencier chaque page?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Disposant a mon arriver d'un base de donnée avec des droits spécifique je ne pouvais utiliser le plugin sfGuard tel quel je m'en suis donc inspirer pour faire mon module de login/logout et pour gérer les droit entres les différentes pages xxxxSuccess.php j'ai créer dans chacun de mes modules un dossier config dans lequel j'ai créer un fichier security.yml, c'est dans ce fichier que tu peux configurer si une page est sécurisée ou non, bien entendu si dans le fichier security.yml situer dans le dossier config de ton application tu à spécifier cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .all:
       is_secure: on
    je ne suis pas sur que les fichier security.yml des modules prévaudront à celui de l'apllication et de ce faite il faut commencer a modifier ce fichier ensuite dans tes modules tu aura :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    monAction1Success:
       is_secure: on
       credentials: admin
     
    monAction2Success:
       is_secure: off
    la seule chose contraignante c'est qu'il faut penser a toutes tes actions pour ne laisser aucune faille ... vive les fichier YAML

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    Juste une question, est ce que c'est bien si par exemple je teste directement dans la vue quels type d'utilisateur peut acceder à cet page?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    je te conseil plutôt de réserver une action a un utilisateur a moins que dans ta vue tu souhaite juste afficher ou non des informations ou des liens vers d'autres modules sur lesquels ton utilisateur à des droits ... rien n'est plus frustrant pour un utilisateur que de lire un message : "vous n'avez pas les droits requis" ou toute variante du genre.

    enfin un petit rappel une vue est le résultat d'un action (certes je tronc un peu ) donc les test sur les utilisateur il faut les faire dans l'action AVANT d'afficher la vue le mieux étant de ne pas montré a l'utilisateur les pages auxquels il n'a pas accès (je sais je me répète avec d'autre mots mais mieux vaut deux fois qu'une !)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    Je ne vois pas trop ce que tu veux dire....

    Car en faites... Voila j'ai une même page qui s'affiche pour des types d'utilisateurs différents avec différents droits...

    Donc je ne voit pas comment faite pour chaque type d'utilisateur faire à chaque fois à peu près la même chose...

    Mais en soit quand j'affiche "que vous n'avez pas les droits", l'utilisateur ne l'a pas fait en cliquant sur un lien, mais en le mettant directement dans l'URL.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Et bien dans ce cas le mieux est effectivement de tester dans ta vue les droits avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php if($sf_user->hasCredential('admin'):?>
       Vous etes administrateur.
    <?php endif; ?>
    Ca fait un peu lourd mais c'est le seul moyen que j'ai trouver pour ne pas répéter mon code pour ce type de vue.

    Pour indication (tu le sais peut-être déjà) $sf_user est un variable symfony qui représente ton utilisateur dans ta vue tu n'a donc pas besoin de le récupérer dans ton action puis de le passer à ta vue.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    Oui je vois ce que tu veux dire !!!

    Je l'ai déja utiliser, mais juste une question la différence entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if($sf_user->hasCredential('admin'):?>
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if($sf_user->hasGroup('parentVictime')): ?>

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  2. Divers questions
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 06/08/2002, 21h57
  3. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11
  4. Question de faisabilité
    Par lisarasu dans le forum CORBA
    Réponses: 3
    Dernier message: 14/05/2002, 11h26
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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