EDIT[] : problème résolu. En fait à la méthode isGranted() il faut lui donner "EDIT" en lettres majuscules ! Or comme dans la doc sf2 on a des $builder->add('edit') je pensais qu'il fallait mettre en minuscules, mais non !
Bonjour.
Je viens vous voir car j'ai un problème dans l'utilisation des ACLs.
Pour mes tests j'ai deux méthodes :
- addAction qui a pour but d'ajouter un article en bdd (à la main donc, juste pour tester)
- editAction qui a pour but d'afficher si oui ou non l'utilisateur a le droit de modifier ledit article
Voici mes codes :
Je ne fais rien de spécial : j'ajoute un article puis je définie les ACLs pour l'utilisateur $u (qui est évidemment connecté). Pour le moment pas de problème. Voici le code de la méthode editAction :
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 <?php $article = new Article(); $article->setTitle('Just a test')->setContent('Here the content !'); $u = $this->get('security.context')->getToken()->getUser(); $article->setAuthor($u); $em = $this->getDoctrine()->getManager(); $em->persist($article); $em->flush(); // ACL $aclProvider = $this->get('security.acl.provider'); $objectIdentity = ObjectIdentity::fromDomainObject($article); $acl = $aclProvider->createAcl($objectIdentity); $identity = UserSecurityIdentity::fromAccount($u); $builder = new MaskBuilder(); $builder->add('edit')->add('delete'); $acl->insertObjectAce($identity, $builder->get()); $aclProvider->updateAcl($acl);
Ce code m'affiche toujours "else" sauf si j'écris isGranted('EDIT', $article). Mais le but du mask de addAction n'est pas justement de se servir des droits ajoutés (edit et delete en l’occurrence) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php $em = $this->getDoctrine()->getManager(); $repo = $em->getRepository('MorganHomeBundle:Article'); $article = $repo->find(1); if($this->get('security.context')->isGranted('edit', $article)) { echo 'if'; } else { echo 'else'; } die;
Merci d'avance pour votre aide.
Partager