From c02ae50fb66d6941137a0e2a8bcbf0433a932369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Tue, 11 Sep 2018 13:56:10 +0200 Subject: [PATCH] Addign fixtures for doc acl and document categories --- CHANGELOG.md | 1 + DataFixtures/ORM/LoadDocumentACL.php | 92 +++++++++++++++++++ DataFixtures/ORM/LoadDocumentCategory.php | 60 ++++++++++++ .../ChillDocStoreExtension.php | 2 +- Entity/StoredObject.php | 11 --- Resources/config/services/fixtures.yml | 4 + 6 files changed, 158 insertions(+), 12 deletions(-) create mode 100644 DataFixtures/ORM/LoadDocumentACL.php create mode 100644 DataFixtures/ORM/LoadDocumentCategory.php create mode 100644 Resources/config/services/fixtures.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index b79e475db..4b11bc76a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,4 +3,5 @@ Dev branches ============ - adding .gitlab-ci to upgrade automatically packagist (master) +- adding fixtures for ACL and DocumentCategory diff --git a/DataFixtures/ORM/LoadDocumentACL.php b/DataFixtures/ORM/LoadDocumentACL.php new file mode 100644 index 000000000..c17e795e6 --- /dev/null +++ b/DataFixtures/ORM/LoadDocumentACL.php @@ -0,0 +1,92 @@ + + * + * 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\Common\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'))) { + 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(); + } + +} diff --git a/DataFixtures/ORM/LoadDocumentCategory.php b/DataFixtures/ORM/LoadDocumentCategory.php new file mode 100644 index 000000000..37e55c5b7 --- /dev/null +++ b/DataFixtures/ORM/LoadDocumentCategory.php @@ -0,0 +1,60 @@ + + * + * 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\Common\Persistence\ObjectManager; +use Chill\DocStoreBundle\Entity\DocumentCategory; + +/** + * + * + */ +class LoadDocumentCategory extends AbstractFixture implements OrderedFixtureInterface +{ + public function getOrder() + { + return 35010; + } + + public function load(ObjectManager $manager) + { + $category = (new DocumentCategory('chill-doc-store', 10)) + ->setDocumentClass(\Chill\DocStoreBundle\Entity\PersonDocument::class) + ->setName([ + 'fr' => "Document d'identité", + 'en' => "Identity" + ]) + ; + + $manager->persist($category); + + $category = (new DocumentCategory('chill-doc-store', 20)) + ->setDocumentClass(\Chill\DocStoreBundle\Entity\PersonDocument::class) + ->setName([ + 'fr' => "Courrier reçu", + 'en' => "Received email" + ]) + ; + + $manager->persist($category); + + $manager->flush(); + } +} diff --git a/DependencyInjection/ChillDocStoreExtension.php b/DependencyInjection/ChillDocStoreExtension.php index aae7c1a16..44141741e 100644 --- a/DependencyInjection/ChillDocStoreExtension.php +++ b/DependencyInjection/ChillDocStoreExtension.php @@ -29,7 +29,7 @@ class ChillDocStoreExtension extends Extension implements PrependExtensionInterf $loader->load('services/media.yml'); $loader->load('services/controller.yml'); $loader->load('services/menu.yml'); - + $loader->load('services/fixtures.yml'); } public function prepend(ContainerBuilder $container) diff --git a/Entity/StoredObject.php b/Entity/StoredObject.php index dde739ee1..e145ff1ab 100644 --- a/Entity/StoredObject.php +++ b/Entity/StoredObject.php @@ -129,17 +129,6 @@ class StoredObject implements AsyncFileInterface return $this->getFilename(); } - public function setAsyncFile(/*AsyncFileInterface*/ $async) - { - dump($async); - //$this->setFilename($async->getObjectName()); - } - - public function getAsyncFile() - { - return $this; - } - public function getKeyInfos() { return $this->keyInfos; diff --git a/Resources/config/services/fixtures.yml b/Resources/config/services/fixtures.yml new file mode 100644 index 000000000..c9bc451d6 --- /dev/null +++ b/Resources/config/services/fixtures.yml @@ -0,0 +1,4 @@ +services: + Chill\DocStoreBundle\DataFixtures\ORM\: + resource: ../../../DataFixtures/ORM + tags: [ 'doctrine.fixture.orm' ]