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 :

Roles du user et security.context [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    424
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 424
    Par défaut Roles du user et security.context
    Bonjour,
    J'ai un soucis assez curieux.
    J'ai personnalisé mon bundle sécurité. Au cours de l'authentification, je charge les rôles de l'utilisateur mais ensuite, presque tout se passe comme si l'utilisateur n'avait aucun rôle.
    Si je fais ça dans mon contrôleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class DefaultController extends Controller
    {
        public function indexAction($name)
        {
            $user = $this->get('security.context')->getToken()->getUser();
            $roles = $user->getRoles();
            return $this->render('Cpam35JoBundle:Default:index.html.twig', array('name' => $name, 'user' => $user, 'roles'=> $roles));
        }
    et que j'affiche roles dans le twig avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <pre>
        {{ roles }}
        {{ user }}
    </pre>
    j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Array
        Array
    (
         ...
         [roles] => array
              (
                  [0] => ROLE_USER,
                  [1] => ROLE_ADMIN
              )
         ...
    )
    Le tableau 'roles' est affiché comme nul alors que, dans le user, le tableau semble renseigné.

    Mon user contient une fontion __toString qui fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        public function __toString()
        {
            return print_r(array(...
                        "roles" => $this->getRoles(),
                        ...), true);
     
        }
    Comment est-ce possible ?
    J'ai bien une variable $roles dans $user, qui semble bien affectée quand je passe par le __toString mais qui semble vide lorsque je passe par le getRoles()

    Quelqu'un a-t-il une idée ?
    Merci

  2. #2
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    424
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 424
    Par défaut Correction
    Correction... Si je fais un print_r($roles, true), l'affichage marche.

    Par contre, je n'ai toujours pas ces rôles au niveau du security.context : isGranted renvoie false même si je teste un rôle de l'utilisateur.
    De même la toolbar de symfony n'affiche pas ces rôles.

  3. #3
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    424
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 424
    Par défaut
    Erreur trouvée.
    Pour que les rôles soient bien pris en considération, il est indispensable de les passer en paramètre lors de la création du Token authentifié.
    Les roles utilisés par symfony sont ceux du Token et non ceux de l'utilisateur.

  4. #4
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Par défaut
    Heu pas tout à fait si tu passes un Objet User qui a une méthode getRoles, ben tu passes l'objet User au Token et ça roules.

  5. #5
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    424
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 424
    Par défaut
    tu passes l'objet User au Token et ça roules.
    A quel moment ?
    Parce que mon $user, il a bien une méthode getRoles mais ça ne fonctionnait pas.

  6. #6
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Par défaut
    Est ce que tes roles sont en bdd ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2014, 11h46
  2. [2.x] Security Context dans le boot d'un Bundle
    Par golf3gtiii dans le forum Symfony
    Réponses: 3
    Dernier message: 03/12/2011, 12h16
  3. [2.x] security.context dans le FindAll() d'une table jointe
    Par khand dans le forum Symfony
    Réponses: 7
    Dernier message: 26/10/2011, 11h24
  4. NULL security context [RHEL 5.6]
    Par irtimid42 dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 12/07/2011, 09h33
  5. JasperServer : Création de role et user
    Par sandF dans le forum Jasperserver
    Réponses: 3
    Dernier message: 28/10/2008, 13h36

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