From 29a72c1605b1e2550794532fbdc602720be439cb Mon Sep 17 00:00:00 2001 From: Polonkai Gergely Date: Thu, 30 Aug 2012 13:09:36 +0200 Subject: [PATCH] Fixed kekrozsak:security:init command Signed-off-by: Gergely Polonkai --- .../Command/SecurityInitCommand.php | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/KekRozsak/SecurityBundle/Command/SecurityInitCommand.php b/src/KekRozsak/SecurityBundle/Command/SecurityInitCommand.php index fdea37b..168955d 100644 --- a/src/KekRozsak/SecurityBundle/Command/SecurityInitCommand.php +++ b/src/KekRozsak/SecurityBundle/Command/SecurityInitCommand.php @@ -7,6 +7,7 @@ use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Security\Acl\Domain\RoleSecurityIdentity; use Symfony\Component\Security\Acl\Domain\ObjectIdentity; use Symfony\Component\Security\Acl\Permission\MaskBuilder; +use Symfony\Component\Security\Acl\Exception\AclNotFoundException; class SecurityInitCommand extends ContainerAwareCommand { @@ -47,11 +48,21 @@ EOF $securityContext = $container->get('security.context'); $aclProvider = $container->get('security.acl.provider'); - $securityIdentity = new RoleSecurityIdentity('ADMIN'); - $objectIdentity = new ObjectIdentity('class', 'KekRozsak\\FrontBundle\\Entity\\News'); - // TODO: Check if the ACL exists, and if so, if it has the same permission mask - $acl = $aclProvider->createAcl($objectIdentity); - $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER); - $aclProvider->updateAcl($acl); + $classNames = array( + 'KekRozsak\\FrontBundle\\Entity\\News', + 'KekRozsak\\FrontBundle\\Entity\\Articles', + ); + + $securityIdentity = new RoleSecurityIdentity('ROLE_ADMIN'); + foreach ($classNames as $className) { + $objectIdentity = new ObjectIdentity('class', $className); + try { + $acl = $aclProvider->findAcl($objectIdentity, array($securityIdentity)); + } catch (AclNotFoundException $e) { + $acl = $aclProvider->createAcl($objectIdentity); + } + $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER); + $aclProvider->updateAcl($acl); + } } }