* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ namespace Chill\DocStoreBundle\DataFixtures\ORM; use Doctrine\Common\DataFixtures\AbstractFixture; use Doctrine\Common\DataFixtures\OrderedFixtureInterface; use Doctrine\Persistence\ObjectManager; use Chill\MainBundle\DataFixtures\ORM\LoadPermissionsGroup; use Chill\MainBundle\Entity\RoleScope; use Chill\MainBundle\DataFixtures\ORM\LoadScopes; use Chill\DocStoreBundle\Security\Authorization\PersonDocumentVoter; /** * Adding acl for person document * */ class LoadDocumentACL extends AbstractFixture implements OrderedFixtureInterface { public function getOrder() { return 35000; } public function load(ObjectManager $manager) { foreach (LoadPermissionsGroup::$refs as $permissionsGroupRef) { $permissionsGroup = $this->getReference($permissionsGroupRef); printf("processing permission group %s \n", $permissionsGroup->getName()); foreach (LoadScopes::$references as $scopeRef){ $scope = $this->getReference($scopeRef); printf("processing scope %s \n", $scope->getName()['en']); //create permission group switch ($permissionsGroup->getName()) { case 'social': if ($scope->getName()['en'] === 'administrative') { printf("denying power on administrative \n"); break 2; // we do not want any power on administrative } break; case 'administrative': case 'direction': if (in_array($scope->getName()['en'], array('administrative', 'social'), true)) { printf("denying power on %s\n", $scope->getName()['en']); break 2; // we do not want any power on social or administrative } break; } printf("Adding Person report acl to %s " . "permission group, scope '%s' \n", $permissionsGroup->getName(), $scope->getName()['en']); $roleScopeUpdate = (new RoleScope()) ->setRole(PersonDocumentVoter::CREATE) ->setScope($scope); $permissionsGroup->addRoleScope($roleScopeUpdate); $roleScopeCreate = (new RoleScope()) ->setRole(PersonDocumentVoter::UPDATE) ->setScope($scope); $permissionsGroup->addRoleScope($roleScopeCreate); $roleScopeDelete = (new RoleScope()) ->setRole(PersonDocumentVoter::DELETE) ->setScope($scope); $permissionsGroup->addRoleScope($roleScopeDelete); $manager->persist($roleScopeUpdate); $manager->persist($roleScopeCreate); $manager->persist($roleScopeDelete); } } $manager->flush(); } }