Salut,
j'ai un petit soucis au niveau de la gestion des rôles,
j'ai donc un objet user qui contient un id, mail et un objet Roles (qui implements Symfony\Component\Security\Core\Role\RoleInterface),
au moment de l'authentification si l'user n'existe pas je veut lui assigné un rôle par défaut.
Donc je récupère un objet Roles de ma base de donnée et je set ma variable $roles dans l'user et je persist et flush (doctrine 2).
Et là j'ai une erreur comme quoi je set un objet et qu'il attend soit un array de string ou une instance de RoleInterface.
J'ai essayé de faire un instanceOf($role) et il me return false alors que ma class l'implement bien... (j'ai bien vérifier c'est pourtant bien mon Objet Roles)
Une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 <?php namespace IMAG\LdapBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Security\Core\Role\RoleInterface; /** * @orm\Entity * @orm\Table(name="roles") */ class Roles implements RoleInterface { /** * @orm\Id * @orm\GeneratedValue(strategy="AUTO") * @orm\Column(type="integer") */ private $id; /** @orm\Column(type="string", length=40, nullable=true) */ private $nom; /** * @var IMAG\LdapBundle\Entity\LdapUser * @orm\ManyToMany(targetEntity="LdapUser", inversedBy="Roles") * @orm\JoinTable(name="user_role", * joinColumns={@orm\JoinColumn(name="user_id", referencedColumnName="id")}, * inverseJoinColumns={@orm\JoinColumn(name="role_id", referencedColumnName="id")} * ) */ private $LdapUser; public function __construct() { } public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getNom() { return $this->nom; } public function setNom($nom) { $this->nom = $nom; } public function getLdapUser() { return $this->LdapUser; } public function setLdapUser($LdapUser) { $this->LdapUser = $LdapUser; } public function getRole() { return $this->nom; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 <?php namespace IMAG\LdapBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Security\Core\User\UserInterface, IMAG\LdapBundle\Manager\LdapManagerInterface; use IMAG\LdapBundle\Entity\Roles; /** * @orm\Entity * @orm\Table(name="users") */ class LdapUser implements UserInterface { /** * @orm\Id * @orm\GeneratedValue(strategy="AUTO") * @orm\Column(type="integer") */ private $id; /** @orm\Column(type="string", length=40) */ private $mail; private $nom; private $prenom; /** * @var Doctrine\Common\Collections\ArrayCollection * @orm\ManyToMany(targetEntity="Roles", mappedBy="LdapUser") * @orm\JoinTable(name="user_role", * joinColumns={@orm\JoinColumn(name="user_id", referencedColumnName="id")}, * inverseJoinColumns={@orm\JoinColumn(name="role_id", referencedColumnName="id")} * ) */ private $Roles; public function __construct() { } public function init($ldapResult, $em){ $role = $em->getRepository('IMAGLdapBundle:Roles')->findOneBy(array('nom' => 'ROLE_Non_defini')); $this->setRoles($role); $em->persist($this); $em->flush();
Partager