Bonjour,

J'utilise les ACL pour les User de mon projet, et ça marche bien.

Mes User font parti de Group et donc pour alléger les ACL je voudrais donner des droits directement aux Group (en gardant la possibilité d'en mètre aux User pour les cas particuliers).

J'utilise FOSUserBundle pour la gestion des User/Group.

J'ai créé un groupe A avec d'id = 1.

Je lui ai assigné un rôle ROLE_GROUP_1

J'ai enfin fait entré le User courant dans ce Group.

J'ai créé un ACE comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$aclProvider = $this->get('security.acl.provider');
$objectIdentity = ObjectIdentity::fromDomainObject($entity);
try {
    $acl = $aclProvider->findAcl($objectIdentity);
} catch (AclNotFoundException $e) {
    $acl = $aclProvider->createAcl($objectIdentity);
}
 
$securityId = new RoleSecurityIdentity('ROLE_GROUP_1');
 
$acl->insertObjectAce($securityId, MaskBuilder::MASK_VIEW);
$aclProvider->updateAcl($acl);
Ce qui m'a bien créé la règle dans la base.

Pour tester si un User a le droit de voir une entitée je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
$securityContext = $this->get('security.context');
 
if(false !== $securityContext->isGranted('VIEW', $entitie))
//on a le droit ...
Ce qui marche ...


Enfin ma question :

Comment tester si l'utilisateur à le droit de voir cette entité par rapport aux Group dont il fait parti ?

Je vous remercie d'avance pour votre aide !