Bonjour,
Je me suis dernièrement intéressé aux Access Control List dans symfony2. Symfony2 est le premier framework que j'utilise et je crois que je commence à me débrouiller, mais pour les ACL j'ai quelques questions à poser...
J'ai lu la doc: http://symfony.com/doc/2.0/cookbook/security/acl.html ou ils explique comment créer des acl avec :
et comment controller des accès avec
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 public function addCommentAction(Post $post) { $comment = new Comment(); // setup $form, and bind data // ... if ($form->isValid()) { $entityManager = $this->get('doctrine.orm.default_entity_manager'); $entityManager->persist($comment); $entityManager->flush(); // creating the ACL $aclProvider = $this->get('security.acl.provider'); $objectIdentity = ObjectIdentity::fromDomainObject($comment); $acl = $aclProvider->createAcl($objectIdentity); // retrieving the security identity of the currently logged-in user $securityContext = $this->get('security.context'); $user = $securityContext->getToken()->getUser(); $securityIdentity = UserSecurityIdentity::fromAccount($user); // grant owner access $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER); $aclProvider->updateAcl($acl); } }Ce que j'ai de la peine à comprendre c'est quand est-ce qu'on doit utiliser les ACL plutot que des contrôles sur les user id dans le controller.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // BlogController.php public function editCommentAction(Comment $comment) { $securityContext = $this->get('security.context'); // check for edit access if (false === $securityContext->isGranted('EDIT', $comment)) { throw new AccessDeniedException(); } // retrieve actual comment object, and do your editing here // ... }
La doc donne l'exemple d'un système de commentaire ou avec les ACL on donne l'autorisation de modifier un commentaire uniquement à l'auteur du commentaire ( et à l'admin j'imagine ). D'après ce que j'ai compris à chaque fois qu'un commentaire va être créé, sf2 va créer une entrée dans la base de donnée qui garde en mémoire l'id du commentaire et de l'auteur.
Mais si par exemple on désire afficher un bouton éditer ou un formulaire uniquement sur les posts dont on est l'auteur vous vous y prendriez comment? Est-ce qu'il y a la possibilité de faire appel au ACL dans les templates twig?
J'aimerai aussi savoir s'il existe et si vous avez testé certains bundle qui permettent de gérer les acl, peut-être sous la forme d'un CRUD.
Merci et bonne journée
Partager