Bonjour bonjour !

J'ai suivi un tuto pour avoir des noms de roles d'authentification, gérés dynamiquement : http://php-and-symfony.matthiasnoback.nl/2012/07/symfony2-security-creating-dynamic-roles-using-roleinterface/

Concrètement, j'ai une classe User et une classe Usertype.
En Usertype, je peux avoir : Admin, Secretariat, Utilisateur.

tous mes users ont un usertype_id, qui me permet d'identifier leur rôle.

J'ai donc fait ça, en adaptant le tuto :

class UserDependentRole implements RoleInterface
{
    private $user;

    public function __construct(UserInterface $user)
    {
        $this->user = $user;
    }

    public function getRole()
    {
        $user=$this->user;

        $usert=$user->getUsertype()->getName();
        $usertype= mb_strtoupper($usert);
        return "ROLE_".$usertype;

    }

}

Mais je me retrouve face à un bug incompréhensible !

Quand je fais tourner ce code, j'ai une erreur : "impossible d'appliquer getName() à un non-objet.

Du coupe, j'ai testé ça :

class UserDependentRole implements RoleInterface
{
    private $user;

    public function __construct(UserInterface $user)
    {
        $this->user = $user;
    }

    public function getRole()
    {
        $user=$this->user;

        $usert=$user->getUsertype()->getName();
        $usertype= mb_strtoupper($usert);
        echo $usertype;
        die();
        return "ROLE_".$usertype;

    }

}

Et là ?????? il m'affiche bien le nom de l'usertype en question ! Il considère donc bien que c'est un objet.

Est-ce que vous pouvez m'aider à comprendre cette erreur.
Par avance merci !
Nans

1 réponse


nans
Auteur

Il semblerait que mettre des protected dans mes propriétés dans les classes permettent de faire fonctionner ce truc... mais 1 seul fois,... après j'ai de nouveau l'erreur !