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