ROLES_"dynamic"

Par nans, il y a 10 ans


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, il y a 10 ans

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 !