diff --git a/.gitignore b/.gitignore index 68c0e6f92..8383a1071 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ web/bundles/* # Configuration files app/config/parameters.ini app/config/parameters.yml +Tests/Fixtures/App/config/parameters.yml #composer composer.lock diff --git a/DataFixtures/ORM/LoadAgents.php b/DataFixtures/ORM/LoadAgents.php deleted file mode 100644 index 80c7a841d..000000000 --- a/DataFixtures/ORM/LoadAgents.php +++ /dev/null @@ -1,63 +0,0 @@ - - */ -class LoadAgents extends AbstractFixture implements ContainerAwareInterface { - - /** - * - * @var ContainerInterface - */ - private $container; - - const AGENT_STRING = 'agent'; - - public function getOrder() { - return 1000; - } - - public function setContainer(ContainerInterface $container = null) { - $this->container = $container; - } - - public function load(ObjectManager $manager) { - - echo "creating agents... \n"; - - $userManager = $this->container->get('fos_user.user_manager'); - - for ($i = 0; $i < 10; $i++) { - $username = 'agent'.$i; - echo "creating agent $username (password $username) \n"; - - $user = $userManager->createUser(); - - $user->setUsername($username) - ->setPassword($username) - ->setName($username) - ->setEmail($username.'@chill.be'); - - $this->container->get('fos_user.user_manager')->updateUser($user, false); - - $this->addReference($username, $user); - } - - $manager->flush(); - } - - - - -} diff --git a/DataFixtures/ORM/LoadCenters.php b/DataFixtures/ORM/LoadCenters.php new file mode 100644 index 000000000..d0bb7178f --- /dev/null +++ b/DataFixtures/ORM/LoadCenters.php @@ -0,0 +1,68 @@ + + * + * 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\MainBundle\DataFixtures\ORM; + +use Doctrine\Common\DataFixtures\AbstractFixture; +use Doctrine\Common\DataFixtures\OrderedFixtureInterface; +use Doctrine\Common\Persistence\ObjectManager; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\DependencyInjection\ContainerAwareInterface; +use Chill\MainBundle\Entity\Center; + +/** + * + * + * @author Julien Fastré + */ +class LoadCenters extends AbstractFixture implements OrderedFixtureInterface +{ + public function getOrder() + { + return 100; + } + + public static $centers = array( + array( + 'name' => 'Center A', + 'ref' => 'centerA' + ), + array( + 'name' => 'Center B', + 'ref' => 'centerB' + ) + ); + + public static $refs = array(); + + public function load(ObjectManager $manager) + { + foreach (static::$centers as $new) { + $centerA = new Center(); + $centerA->setName($new['name']); + + $manager->persist($centerA); + $this->addReference($new['ref'], $centerA); + static::$refs[] = $new['ref']; + } + + $manager->flush(); + } +} diff --git a/DataFixtures/ORM/LoadGroupCenters.php b/DataFixtures/ORM/LoadGroupCenters.php new file mode 100644 index 000000000..04a34d080 --- /dev/null +++ b/DataFixtures/ORM/LoadGroupCenters.php @@ -0,0 +1,63 @@ + + * + * 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\MainBundle\DataFixtures\ORM; + +use Doctrine\Common\DataFixtures\AbstractFixture; +use Doctrine\Common\DataFixtures\OrderedFixtureInterface; +use Doctrine\Common\Persistence\ObjectManager; +use Chill\MainBundle\Entity\GroupCenter; +use Chill\MainBundle\DataFixtures\ORM\LoadCenters; +use Chill\MainBundle\DataFixtures\ORM\LoadPermissionsGroup; + +/** + * + * + * @author Julien Fastré + */ +class LoadGroupCenters extends AbstractFixture implements OrderedFixtureInterface +{ + public function getOrder() + { + return 500; + } + + public static $refs = array(); + + public function load(ObjectManager $manager) + { + foreach (LoadCenters::$refs as $centerRef) { + foreach (LoadPermissionsGroup::$refs as $permissionGroupRef) { + $GroupCenter = new GroupCenter(); + $GroupCenter->setCenter($this->getReference($centerRef)); + $GroupCenter->addPermissionGroup($this->getReference($permissionGroupRef)); + + $manager->persist($GroupCenter); + + $reference = $centerRef.'_'.$permissionGroupRef; + $this->addReference($reference, $GroupCenter); + static::$refs[] = $reference; + echo "Creating $reference... \n"; + } + } + + $manager->flush(); + } +} diff --git a/DataFixtures/ORM/LoadPermissionsGroup.php b/DataFixtures/ORM/LoadPermissionsGroup.php new file mode 100644 index 000000000..b2ed78934 --- /dev/null +++ b/DataFixtures/ORM/LoadPermissionsGroup.php @@ -0,0 +1,87 @@ + + * + * 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\MainBundle\DataFixtures\ORM; + +use Doctrine\Common\DataFixtures\AbstractFixture; +use Doctrine\Common\DataFixtures\OrderedFixtureInterface; +use Doctrine\Common\Persistence\ObjectManager; +use Chill\MainBundle\Entity\PermissionsGroup; + +/** + * + * + * @author Julien Fastré + */ +class LoadPermissionsGroup extends AbstractFixture implements OrderedFixtureInterface +{ + public function getOrder() + { + return 400; + } + + public static $permissionGroup = array( + array( + 'name' => 'social', + 'role_scopes' => array( + 'role_scope_CHILL_FOO_EDIT_social', + 'role_scope_CHILL_FOO_SEE_administrative', + "role_scope_CHILL_FOO_EDIT_all" + ) + ), + array( + 'name' => 'administrative', + 'role_scopes' => array( + "role_scope_CHILL_FOO_SEE_social", + "role_scope_CHILL_FOO_EDIT_administrative", + "role_scope_CHILL_FOO_EDIT_all" + ) + ), + array( + 'name' => 'direction', + 'role_scopes' => array( + "role_scope_CHILL_FOO_EDIT_all", + "role_scope_CHILL_FOO_SEE_DETAILS_social", + "role_scope_CHILL_FOO_SEE_DETAILS_administrative" + ) + ) + ); + + public static $refs = array(); + + public function load(ObjectManager $manager) + { + foreach (static::$permissionGroup as $new) { + $permissionGroup = new PermissionsGroup(); + $permissionGroup->setName($new['name']); + foreach ($new['role_scopes'] as $roleScopeRef) { + $permissionGroup->addRoleScope($this->getReference($roleScopeRef)); + } + + $manager->persist($permissionGroup); + $reference = 'permission_group_'.$new['name']; + echo "Creating $reference \n"; + $this->setReference($reference, $permissionGroup); + static::$refs[] = $reference; + } + + $manager->flush(); + } +} diff --git a/DataFixtures/ORM/LoadRoleScopes.php b/DataFixtures/ORM/LoadRoleScopes.php new file mode 100644 index 000000000..9693576d6 --- /dev/null +++ b/DataFixtures/ORM/LoadRoleScopes.php @@ -0,0 +1,86 @@ + + * + * 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\MainBundle\DataFixtures\ORM; + +use Doctrine\Common\DataFixtures\AbstractFixture; +use Doctrine\Common\DataFixtures\OrderedFixtureInterface; +use Doctrine\Common\Persistence\ObjectManager; +use Chill\MainBundle\Entity\RoleScope; +use Chill\MainBundle\DataFixtures\ORM\LoadScopes; + +/** + * + * + * @author Julien Fastré + */ +class LoadRoleScopes extends AbstractFixture implements OrderedFixtureInterface +{ + public function getOrder() + { + return 300; + } + + public static $permissions = array( + 'CHILL_FOO_SEE' => array( + 'names' => array( + 'fr' => 'voir foo', + 'en' => 'see foo', + 'nl' => 'zie foo' + ) + ), + 'CHILL_FOO_SEE_DETAILS' => array( + 'names' => array( + 'fr' => 'voir foo avec détails', + 'en' => 'see foo with details', + 'nl' => 'zie foo in details' + ) + ), + 'CHILL_FOO_EDIT' => array( + 'names' => array( + 'fr' => 'modifier foo', + 'en' => 'edit foo', + 'nl' => 'editie foo' + ) + ) + ); + + public static $references = array(); + + public function load(ObjectManager $manager) + { + foreach (static::$permissions as $key => $permission) { + foreach(LoadScopes::$references as $scopeReference) { + $roleScope = new RoleScope(); + $roleScope->setRole($key) + ->setScope($this->getReference($scopeReference)) + ; + $reference = 'role_scope_'.$key.'_'.$this->getReference($scopeReference)->getName()['en']; + echo "Creating $reference \n"; + $this->addReference($reference, $roleScope); + $manager->persist($roleScope); + static::$references[] = $reference; + } + } + + $manager->flush(); + } + +} diff --git a/DataFixtures/ORM/LoadScopes.php b/DataFixtures/ORM/LoadScopes.php new file mode 100644 index 000000000..d3a7f16fd --- /dev/null +++ b/DataFixtures/ORM/LoadScopes.php @@ -0,0 +1,82 @@ + + * + * 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\MainBundle\DataFixtures\ORM; + +use Doctrine\Common\DataFixtures\AbstractFixture; +use Doctrine\Common\DataFixtures\OrderedFixtureInterface; +use Doctrine\Common\Persistence\ObjectManager; + +/** + * Create scopes + * + * @author Julien Fastré + */ +class LoadScopes extends AbstractFixture implements OrderedFixtureInterface +{ + public function getOrder() + { + return 200; + } + + public $scopes = array( + array( + 'names' => array( + 'fr' => 'tous', + 'en' => 'all', + 'nl' => 'algemeen' + ), + ), + array( + 'names' => array( + 'fr' => 'social', + 'en' => 'social', + 'nl' => 'sociaal' + ) + ), + array( + 'names' => array( + 'fr' => 'administratif', + 'en' => 'administrative', + 'nl' => 'administratief' + ) + ) + ); + + public static $references = array(); + + public function load(ObjectManager $manager) + { + + $scopesReferences = array(); + + foreach ($this->scopes as $new) { + $scope = new \Chill\MainBundle\Entity\Scope(); + $scope->setName($new['names']); + + $manager->persist($scope); + $reference = 'scope_'.$new['names']['en']; + $this->addReference($reference, $scope); + static::$references[] = $reference; + } + + $manager->flush(); + } +} diff --git a/DataFixtures/ORM/LoadUsers.php b/DataFixtures/ORM/LoadUsers.php new file mode 100644 index 000000000..df5ca2100 --- /dev/null +++ b/DataFixtures/ORM/LoadUsers.php @@ -0,0 +1,72 @@ + + */ +class LoadUsers extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface +{ + /** + * + * @var ContainerInterface + */ + private $container; + + public function getOrder() + { + return 1000; + } + + public static $refs = array(); + + public function load(ObjectManager $manager) + { + foreach(LoadCenters::$refs as $centerRef) { + foreach(LoadPermissionsGroup::$refs as $permissionGroupRef) { + $user = new User(); + + $permissionGroup = $this->getReference($permissionGroupRef); + $center = $this->getReference($centerRef); + $username = $center->getName().'_'.$permissionGroup->getName(); + + $user->setUsername($username) + ->setPassword($this->container->get('security.encoder_factory') + ->getEncoder($user) + ->encodePassword($username, $user->getSalt())); + $user->addGroupCenter($this->getReference($centerRef.'_'.$permissionGroupRef)); + + $manager->persist($user); + $this->addReference($username, $user); + static::$refs[] = $user->getUsername(); + echo "Creating user with username ".$user->getUsername()."... \n"; + } + } + + $manager->flush(); + } + + public function setContainer(ContainerInterface $container = null) + { + if (NULL === $container) { + throw new \LogicException('$container should not be null'); + } + + $this->container = $container; + } + +} diff --git a/Entity/Agent.php b/Entity/Agent.php deleted file mode 100644 index fe6d63c98..000000000 --- a/Entity/Agent.php +++ /dev/null @@ -1,64 +0,0 @@ -id; - } - - /** - * Set name - * - * @param string $name - * @return Agent - */ - public function setName($name) - { - $this->name = $name; - - return $this; - } - - /** - * Get name - * - * @return string - */ - public function getName() - { - return $this->name; - } - - public function __toString() { - return parent::__toString(); - } -} diff --git a/Entity/Center.php b/Entity/Center.php new file mode 100644 index 000000000..fddb54441 --- /dev/null +++ b/Entity/Center.php @@ -0,0 +1,81 @@ + + * + * 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\MainBundle\Entity; + +/** + * + * + * @author Julien Fastré + */ +class Center +{ + /** + * + * @var string + */ + private $name; + + /** + * + * @var int + */ + private $id; + + /** + * + * @var \Doctrine\Common\Collections\Collection + */ + private $groupCenters; + + public function __construct() + { + $this->groupCenters = new \Doctrine\Common\Collections\ArrayCollection(); + } + + public function getName() + { + return $this->name; + } + + public function setName($name) + { + $this->name = $name; + return $this; + } + + public function getId() + { + return $this->id; + } + + public function getGroupCenters() + { + return $this->groupCenters; + } + + public function addGroupCenter(GroupCenter $groupCenter) + { + $this->groupCenters->add($groupCenter); + return $this; + } + + +} diff --git a/Entity/GroupCenter.php b/Entity/GroupCenter.php new file mode 100644 index 000000000..d882ab526 --- /dev/null +++ b/Entity/GroupCenter.php @@ -0,0 +1,118 @@ + + * + * 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\MainBundle\Entity; + +use Chill\MainBundle\Entity\Center; +use Chill\MainBundle\Entity\PermissionsGroup; +use Doctrine\Common\Collections\Collection; +use Doctrine\Common\Collections\ArrayCollection; + +/** + * + * + * @author Julien Fastré + */ +class GroupCenter +{ + /** + * + * @var int + */ + private $id; + + /** + * + * @var Center + */ + private $center; + + /** + * + * @var Collection + */ + private $users; + + /** + * + * @var Collection + */ + private $permissionGroups; + + public function __construct() + { + $this->permissionGroups = new ArrayCollection(); + $this->users = new ArrayCollection(); + } + + public function getId() + { + return $this->id; + } + + /** + * + * @return Center + */ + public function getCenter() + { + return $this->center; + } + + /** + * + * @return PermissionGroup[] + */ + public function getPermissionGroups() + { + return $this->permissionGroups; + } + + /** + * + * @param Center $center + * @return \Chill\MainBundle\Entity\GroupCenter + */ + public function setCenter(Center $center) + { + $this->center = $center; + return $this; + } + + /** + * + * @param PermissionGroup $permission + * @return \Chill\MainBundle\Entity\GroupCenter + */ + public function addPermissionGroup(PermissionsGroup $permission) + { + $this->permissionGroups->add($permission); + return $this; + } + + public function getUsers() + { + return $this->users; + } + + + + +} diff --git a/Entity/PermissionsGroup.php b/Entity/PermissionsGroup.php new file mode 100644 index 000000000..c3f78fcb0 --- /dev/null +++ b/Entity/PermissionsGroup.php @@ -0,0 +1,88 @@ + + * + * 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\MainBundle\Entity; + +use Chill\MainBundle\Entity\RoleScope; + + + +/** + * + * + * @author Julien Fastré + */ +class PermissionsGroup +{ + /** + * + * @var int + */ + private $id; + + /** + * + * @var string + */ + private $name; + + /** + * + * @var \Doctrine\Common\Collections\Collection + */ + private $roleScopes; + + public function __construct() + { + $this->roleScopes = new \Doctrine\Common\Collections\ArrayCollection(); + } + + public function getId() + { + return $this->id; + } + + /** + * + * @return string + */ + public function getName() + { + return $this->name; + } + + public function getRoleScopes() + { + return $this->roleScopes; + } + + public function setName($name) + { + $this->name = $name; + return $this; + } + + public function addRoleScope(RoleScope $roleScope) + { + $this->roleScopes->add($roleScope); + } + + +} diff --git a/Entity/RoleScope.php b/Entity/RoleScope.php new file mode 100644 index 000000000..8d85ff4a9 --- /dev/null +++ b/Entity/RoleScope.php @@ -0,0 +1,94 @@ + + * + * 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\MainBundle\Entity; + +/** + * + * + * @author Julien Fastré + */ +class RoleScope +{ + /** + * + * @var int + */ + private $id; + + /** + * + * @var string + */ + private $role; + + /** + * + * @var Scope + */ + private $scope; + + public function getId() + { + return $this->id; + } + + /** + * + * @return string + */ + public function getRole() + { + return $this->role; + } + + /** + * + * @return Scope + */ + public function getScope() + { + return $this->scope; + } + + /** + * + * @param type $role + * @return \Chill\MainBundle\Entity\RoleScope + */ + public function setRole($role) + { + $this->role = $role; + return $this; + } + + /** + * + * @param \Chill\MainBundle\Entity\Scope $scope + * @return \Chill\MainBundle\Entity\RoleScope + */ + public function setScope(Scope $scope) + { + $this->scope = $scope; + return $this; + } + + +} diff --git a/Entity/Scope.php b/Entity/Scope.php new file mode 100644 index 000000000..4a55d3c26 --- /dev/null +++ b/Entity/Scope.php @@ -0,0 +1,93 @@ + + * + * 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\MainBundle\Entity; + +use Chill\MainBundle\Entity\RoleScope; + +/** + * + * + * @author Julien Fastré + */ +class Scope +{ + /** + * + * @var int + */ + private $id; + + /** + * translatable names + * + * @var array + */ + private $name = array(); + + /** + * + * @var \Doctrine\Common\Collections\Collection + */ + private $roleScopes; + + public function __construct() + { + $this->roleScopes = new \Doctrine\Common\Collections\ArrayCollection(); + } + + /** + * + * @return int + */ + public function getId() + { + return $this->id; + } + + /** + * + * @return array + */ + public function getName() + { + return $this->name; + } + + public function setName($name) + { + $this->name = $name; + return $this; + } + + /** + * + * @return \Doctrine\Common\Collections\Collection + */ + public function getRoleScopes() + { + return $this->roleScopes; + } + + public function addRoleScope(RoleScope $roleScope) + { + $this->roleScopes->add($roleScope); + } +} diff --git a/Entity/User.php b/Entity/User.php new file mode 100644 index 000000000..76c3f4316 --- /dev/null +++ b/Entity/User.php @@ -0,0 +1,188 @@ +groupCenters = new ArrayCollection(); + } + + + /** + * Get id + * + * @return integer + */ + public function getId() + { + return $this->id; + } + + /** + * Set username + * + * @param string $name + * @return Agent + */ + public function setUsername($name) + { + $this->username = $name; + + return $this; + } + + public function __toString() { + return $this->getUsername(); + } + + public function eraseCredentials() + { + + } + + /** + * + * @return string + */ + public function getPassword() + { + return $this->password; + } + + public function getRoles() + { + return 'ROLE_USER'; + } + + public function getSalt() + { + return $this->salt; + } + + public function getUsername() + { + return $this->username; + } + + function setPassword($password) + { + $this->password = $password; + return $this; + } + + function setSalt($salt) + { + $this->salt = $salt; + return $this; + } + + /** + * {@inheritdoc} + * + * @return boolean + */ + public function isAccountNonExpired() + { + return false; + } + + /** + * {@inheritdoc} + * + */ + public function isAccountNonLocked() + { + return $this->locked; + } + + /** + * {@inheritdoc} + * + * @return boolean + */ + public function isCredentialsNonExpired() + { + return true; + } + + /** + * {@inheritdoc} + * + * @return boolean + */ + public function isEnabled() + { + return $this->enabled; + } + + /** + * + * @return GroupCenter[] + */ + public function getGroupCenters() + { + return $this->groupCenters; + } + + /** + * + * @param \Chill\MainBundle\Entity\GroupCenter $groupCenter + * @return \Chill\MainBundle\Entity\User + */ + public function addGroupCenter(GroupCenter $groupCenter) + { + $this->groupCenters->add($groupCenter); + return $this; + } + +} diff --git a/README.md b/README.md index 573e9287a..faf08fc08 100644 --- a/README.md +++ b/README.md @@ -3,4 +3,4 @@ ChillMain An app for social-profit organisations -[![Build Status](https://travis-ci.org/Chill-project/Main.png)](http://travis-ci.org/#!/Champs-Libres/ChillMain) +[![Build Status](https://travis-ci.org/Chill-project/Main.png)](http://travis-ci.org/#!/Chill-project/Main.png) diff --git a/Resources/config/doctrine/Agent.orm.yml b/Resources/config/doctrine/Agent.orm.yml deleted file mode 100644 index adec421b4..000000000 --- a/Resources/config/doctrine/Agent.orm.yml +++ /dev/null @@ -1,14 +0,0 @@ -Chill\MainBundle\Entity\Agent: - type: entity - table: agents - id: - id: - type: integer - id: true - generator: - strategy: AUTO - fields: - name: - type: string - length: 80 - diff --git a/Resources/config/doctrine/Center.orm.yml b/Resources/config/doctrine/Center.orm.yml new file mode 100644 index 000000000..8ac4355cc --- /dev/null +++ b/Resources/config/doctrine/Center.orm.yml @@ -0,0 +1,17 @@ +Chill\MainBundle\Entity\Center: + type: entity + table: centers + id: + id: + type: integer + id: true + generator: + strategy: AUTO + fields: + name: + type: string + length: 255 + oneToMany: + groupCenters: + targetEntity: Chill\MainBundle\Entity\GroupCenter + mappedBy: groupCenters \ No newline at end of file diff --git a/Resources/config/doctrine/GroupCenter.orm.yml b/Resources/config/doctrine/GroupCenter.orm.yml new file mode 100644 index 000000000..37a7a81f5 --- /dev/null +++ b/Resources/config/doctrine/GroupCenter.orm.yml @@ -0,0 +1,16 @@ +Chill\MainBundle\Entity\GroupCenter: + type: entity + table: group_centers + id: + id: + type: integer + id: true + generator: + strategy: AUTO + manyToOne: + center: + targetEntity: Chill\MainBundle\Entity\Center + inversedBy: groupCenters + manyToMany: + permissionGroups: + targetEntity: Chill\MainBundle\Entity\PermissionsGroup \ No newline at end of file diff --git a/Resources/config/doctrine/PermissionsGroup.orm.yml b/Resources/config/doctrine/PermissionsGroup.orm.yml new file mode 100644 index 000000000..c0ebe69fc --- /dev/null +++ b/Resources/config/doctrine/PermissionsGroup.orm.yml @@ -0,0 +1,17 @@ +Chill\MainBundle\Entity\PermissionsGroup: + type: entity + table: permission_groups + id: + id: + type: integer + id: true + generator: + strategy: AUTO + fields: + name: + type: string + length: 255 + manyToMany: + roleScopes: + targetEntity: Chill\MainBundle\Entity\RoleScope + \ No newline at end of file diff --git a/Resources/config/doctrine/RoleScope.orm.yml b/Resources/config/doctrine/RoleScope.orm.yml new file mode 100644 index 000000000..4ab688b7b --- /dev/null +++ b/Resources/config/doctrine/RoleScope.orm.yml @@ -0,0 +1,17 @@ +Chill\MainBundle\Entity\RoleScope: + type: entity + table: role_scopes + id: + id: + type: integer + id: true + generator: + strategy: AUTO + fields: + role: + type: string + length: 255 + manyToOne: + scope: + targetEntity: Chill\MainBundle\Entity\Scope + inversedBy: roleScopes \ No newline at end of file diff --git a/Resources/config/doctrine/Scope.orm.yml b/Resources/config/doctrine/Scope.orm.yml new file mode 100644 index 000000000..188d8c307 --- /dev/null +++ b/Resources/config/doctrine/Scope.orm.yml @@ -0,0 +1,16 @@ +Chill\MainBundle\Entity\Scope: + type: entity + table: scopes + id: + id: + type: integer + id: true + generator: + strategy: AUTO + fields: + name: + type: json_array + oneToMany: + roleScopes: + targetEntity: Chill\MainBundle\Entity\RoleScope + mappedBy: scope \ No newline at end of file diff --git a/Resources/config/doctrine/User.orm.yml b/Resources/config/doctrine/User.orm.yml new file mode 100644 index 000000000..924b85ac1 --- /dev/null +++ b/Resources/config/doctrine/User.orm.yml @@ -0,0 +1,31 @@ +Chill\MainBundle\Entity\User: + type: entity + table: users + id: + id: + type: integer + id: true + generator: + strategy: AUTO + fields: + username: + type: string + length: 80 + password: + type: string + length: 255 + salt: + type: string + length: 255 + nullable: true + enabled: + type: boolean + default: true + locked: + type: boolean + default: false + manyToMany: + groupCenters: + targetEntity: Chill\MainBundle\Entity\GroupCenter + + diff --git a/Tests/Fixtures/App/AppKernel.php b/Tests/Fixtures/App/AppKernel.php index de2e11b9c..001d9f4a1 100644 --- a/Tests/Fixtures/App/AppKernel.php +++ b/Tests/Fixtures/App/AppKernel.php @@ -13,6 +13,7 @@ class AppKernel extends Kernel new Symfony\Bundle\SecurityBundle\SecurityBundle(), new Symfony\Bundle\TwigBundle\TwigBundle(), new \Symfony\Bundle\AsseticBundle\AsseticBundle(), + new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), ); } diff --git a/Tests/Fixtures/App/config/config.yml b/Tests/Fixtures/App/config/config.yml index 0046eed72..65d55d368 100644 --- a/Tests/Fixtures/App/config/config.yml +++ b/Tests/Fixtures/App/config/config.yml @@ -1,3 +1,6 @@ +imports: + - { resource: parameters.yml } + framework: secret: Not very secret router: { resource: "%kernel.root_dir%/config/routing.yml" } @@ -9,3 +12,14 @@ framework: profiler: { only_exceptions: false } templating: engines: ['twig'] + +# Doctrine Configuration +doctrine: + dbal: + driver: pdo_pgsql + host: "%database_host%" + port: "%database_port%" + dbname: "%database_name%" + user: "%database_user%" + password: "%database_password%" + charset: UTF8 diff --git a/Tests/Fixtures/App/config/parameters.yml.dist b/Tests/Fixtures/App/config/parameters.yml.dist new file mode 100644 index 000000000..38fab7fd2 --- /dev/null +++ b/Tests/Fixtures/App/config/parameters.yml.dist @@ -0,0 +1,11 @@ +parameters: + database_host: 127.0.0.1 + database_port: 5435 + database_name: chill + database_user: chill + database_password: chill + locale: fr + secret: ThisTokenIsNotSoSecretChangeIt + debug_toolbar: true + debug_redirects: false + use_assetic_controller: true \ No newline at end of file diff --git a/composer.json b/composer.json index 05765c64f..5fab1a8b9 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "chill-project/main", - "license": "GPL-3.0", + "license": "AGPL-3.0", "type": "symfony-bundle", "description": "The main bundle for the Chill App", "keywords" : ["chill", "social work"], @@ -21,9 +21,14 @@ "symfony/monolog-bundle": "~2.4", "symfony/framework-bundle": "2.5.*", "symfony/yaml": "2.5.*", - "symfony/symfony": "2.5.*" + "symfony/symfony": "2.5.*", + "doctrine/dbal": "2.5.*@dev", + "doctrine/orm": "2.5.*@dev", + "doctrine/common": "2.4.*@dev", + "doctrine/doctrine-bundle": "~1.2@dev" }, "require-dev": { - "symfony/dom-crawler": "2.5" + "symfony/dom-crawler": "2.5", + "doctrine/doctrine-fixtures-bundle": "~2.2" } }