Bonjour,

Voila je souhaite créé un système de gestion de profils et de droit avec FOSUserBundle. Jusqu'ici, je me contentait de créé mes rôles dans le fichier sécurity.yml (ROLE_ADMIN, ROLE_USER etc..). Cette facon de faire reste un peu statique et limité. je souhaiterai créé tout un système qui me permettra de créé des profils et d'y associer des rôles dynamiquement.
J'ai vu dans la documentation qu'il est possible de le faire avec les groups de FOS. Mais la documentation est très sommaire. voici ce que j'ai déjà fais.

entité group.php

<?php

namespace App\UserBundle\Entity;

use FOS\UserBundle\Model\Group as BaseGroup;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="tr_group")
 */
class Group extends BaseGroup
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

}

entité user.php

<?php
namespace App\UserBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="tr_users")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\ManyToMany(targetEntity="App\UserBundle\Entity\Group")
     * @ORM\JoinTable(name="tr_user_user_group",
     *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
     * )
     */
    protected $groups;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

résultat actuelle : j'ai un formulaire avec un champ qui me permet de créer les groupes.
c'est un bon début mais il me faut associer des droit à ces groupes (ces droits peuvent être des opérations de lecture, d'écriture, de modification ou de supression sur une entité, article par exemple)
j'ai pensé à surchager le GroupFormType.php mais je ne sais pas trop comment m'y prendre
quelqu'un pourait t'il m'aider s'il vous plait

Aucune réponse