J'essaie de tirer des rôles d'une base de données à utiliser pour l'authentification des utilisateurs. Pour ce faire, je l'ai créé un objet groupe qui étend le rôle tout comme le code ci-dessous:Quelle est la différence entre le rôle et le nom dans la classe de rôle symfony2?
// src/Acme/Bundle/UserBundle/Entity/Group.php
namespace Acme\UserBundle\Entity;
use Symfony\Component\Security\Core\Role\Role;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="acme_groups")
* @ORM\Entity()
*/
class Group extends Role
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="name", type="string", length=30)
*/
private $name;
/**
* @ORM\Column(name="role", type="string", length=20, unique=true)
*/
private $role;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="groups")
*/
private $users;
public function __construct()
{
$this->users = new ArrayCollection();
}
// ... getters and setters for each property
/**
* @see RoleInterface
*/
public function getRole()
{
return $this->role;
}
}
Ce qui me embrouille est que je ne vois pas la relation entre cette classe et les champs correspondants dans security.yml tels as:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
Ainsi, les noms se trouveraient-ils sur le côté droit du: et le rôle sur le côté droit? Par exemple dans
ROLE_ADMIN: ROLE_USER
ROLE_ADMIN serait le nom du groupe et ROLE_USER deviendrait le rôle? Ce qui n'a pas non plus de sens pour moi, c'est comment symfony2 implémente la propriété de rôle en tant que variable unique et non en tant que tableau. Puisque dans l'instruction
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
Il existe plusieurs rôles, pas seulement un rôle. Comment cela correspond-il à la classe définie ci-dessus? Je suis le livre de cuisine de symfony2 http://symfony.com/doc/current/cookbook/security/entity_provider.html#managing-roles-in-the-database.
Tout cela a du sens maintenant, merci beaucoup! –