Bonjour,

J'aimerai réaliser le formulaire suivant mais je coince car les ACL ne sont pas référencés dans l'ORM...

En gros j'aimerai pour n'importe quel object pouvoir éditer les différents droits d'accès (ACL) des utilisateurs, j'ai pensé faire deux formulaires dans la page d'édition de l'objet :

Voici donc le formulaire :

<!-- formulaire 1-->
Liste des divers champs
- label champ
- label champ
- label champ

[Modifier]

<!-- formulaire 2-->
Petit formulaire pour ajouter un user supplémentaire (ajax?)
------------------------------------------
[users_list] view[] edit[] delete[] owner[] [ADD]
------------------------------------------
Liste des users ayant des MASK acl sur l'objet...
user1 view[X] edit[X] delete[] owner[]
user2 view[X] edit[X] delete[X] owner[X]
user3 view[X] edit[] delete[] owner[]

[Modifier]

Pour le premier formulaire aucun problème.. le second, j'ai réussit plus ou moins à injecter les ACL de mon object dans un autre formulaire mais ensuite pour créer la liste des privilèges par utilisateurs c'est une autre histoire...

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
 
public function editAction($id)
{
        $editForm = $this->createForm(new ProductType(), $entity);
        $objectIdentity = ObjectIdentity::fromDomainObject($entity);
        $acl = $this->get('security.acl.provider')->findAcl($objectIdentity);
        $aclForm = $this->createForm(new                 \Aaa\UserBundle\Form\UserAclType(), $acl);
}
 
public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('users', 'entity', array(
            'class' => 'UserBundle:User',
            'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
                return $er->createQueryBuilder('u')
                    ->orderBy('u.username', 'ASC');
            },
            'mapped' => false
            ))
        ;
 
        // Récupération de l'acl dans les options
        $acl = $options['data'];
 
        // Pour tout les accès à l'objet
        $builder->add("usersRoles", "collection", array(
            'by_reference' => false,
            'type' => new \Aaa\UserBundle\Form\UserAclMaskType,
            'mapped' => false
        ));
    }
En gros le champs collection ne s'affichent jamais mais je ne sais pas pourquoi..

Enfin bref, je suis peut être mal parti dès le début, si vous avez des idées je suis vraiment preneur !

Merci d'avance !!