public function postActivation(ConnectionInterface $con = null)
 {
     $aclXmlFileloader = new AclXmlFileloader(Translator::getInstance());
     $modules = ModuleQuery::create()->findByActivate(BaseModule::IS_ACTIVATED);
     /** @var Module $module */
     foreach ($modules as $module) {
         $aclXmlFileloader->load($module);
     }
 }
 public function manageAcl(ModuleToggleActivationEvent $event)
 {
     if (null === ($module = ModuleQuery::create()->findPk($event->getModuleId()))) {
         return;
     }
     //In case of deactivation do nothing
     if ($module->getActivate() == BaseModule::IS_ACTIVATED) {
         return;
     }
     //In case of activation update acls
     $this->aclXmlFileloader->load($module);
 }
 /**
  * @covers AclXmlFileloader::load()
  */
 public function testLoadModuleWithValidConfigFile()
 {
     // get the acl and group acl state
     $initialAcls = AclQuery::create()->find();
     $initialCustomerGroupAcls = CustomerGroupAclQuery::create()->find();
     // load a test module with a valid ACL configuration
     $this->aclXmlFileloader->load($this->getStubModule("ModuleValidConfigFile"));
     // assert that the initial acl and group acl are still here
     $finalAcls = AclQuery::create()->find();
     foreach ($initialAcls as $acl) {
         $this->assertTrue($finalAcls->contains($acl));
     }
     $finalCustomerGroupAcls = CustomerGroupAclQuery::create()->find();
     foreach ($initialCustomerGroupAcls as $customerGroupAcl) {
         $this->assertTrue($finalCustomerGroupAcls->contains($customerGroupAcl));
     }
     // ensure that the new ACL were created
     $this->assertEquals($initialAcls->count() + 2, $finalAcls->count());
     $aclA = AclQuery::create()->findOneByCode("-customer-group-acl-unit-test-acl-a-");
     $this->assertNotNull($aclA);
     $aclA->setLocale("en_US");
     $this->assertEquals("Test ACL A", $aclA->getTitle());
     $this->assertEquals("Test ACL A description.", $aclA->getDescription());
     $aclA->setLocale("fr_FR");
     $this->assertEquals("ACL de test A", $aclA->getTitle());
     $this->assertEquals("Description de l'ACL de test A.", $aclA->getDescription());
     $aclB = AclQuery::create()->findOneByCode("-customer-group-acl-unit-test-acl-b-");
     $this->assertNotNull($aclB);
     $aclB->setLocale("en_US");
     $this->assertEquals("Test ACL B", $aclB->getTitle());
     $this->assertEquals("Test ACL B description.", $aclB->getDescription());
     $aclB->setLocale("fr_FR");
     $this->assertEquals("ACL de test B", $aclB->getTitle());
     $this->assertEquals("Description de l'ACL de test B.", $aclB->getDescription());
     // ensure that the group ACL were created
     $this->assertEquals($initialCustomerGroupAcls->count() + 11, $finalCustomerGroupAcls->count());
     // group a
     $this->assertCustomerGroupAclExistsAndUnique($aclA, self::$testCustomerGroups[0], CustomerGroupAclAccessManager::getAccessPowsValue("VIEW"));
     $this->assertCustomerGroupAclExistsAndUnique($aclA, self::$testCustomerGroups[0], CustomerGroupAclAccessManager::getAccessPowsValue("CREATE"));
     $this->assertCustomerGroupAclExistsAndUnique($aclB, self::$testCustomerGroups[0], CustomerGroupAclAccessManager::getAccessPowsValue("VIEW"));
     // group b
     $this->assertCustomerGroupAclExistsAndUnique($aclB, self::$testCustomerGroups[1], CustomerGroupAclAccessManager::getAccessPowsValue("VIEW"));
     $this->assertCustomerGroupAclExistsAndUnique($aclB, self::$testCustomerGroups[1], CustomerGroupAclAccessManager::getAccessPowsValue("CREATE"));
     $this->assertCustomerGroupAclExistsAndUnique($aclB, self::$testCustomerGroups[1], CustomerGroupAclAccessManager::getAccessPowsValue("UPDATE"));
     $this->assertCustomerGroupAclExistsAndUnique($aclB, self::$testCustomerGroups[1], CustomerGroupAclAccessManager::getAccessPowsValue("DELETE"));
     // group c, uses group a accesses
     $this->assertCustomerGroupAclExistsAndUnique($aclA, self::$testCustomerGroups[2], CustomerGroupAclAccessManager::getAccessPowsValue("VIEW"));
     $this->assertCustomerGroupAclExistsAndUnique($aclA, self::$testCustomerGroups[2], CustomerGroupAclAccessManager::getAccessPowsValue("CREATE"));
     $this->assertCustomerGroupAclExistsAndUnique($aclB, self::$testCustomerGroups[2], CustomerGroupAclAccessManager::getAccessPowsValue("VIEW"));
     // group d, uses group a accesses for acl b
     $this->assertCustomerGroupAclExistsAndUnique($aclB, self::$testCustomerGroups[3], CustomerGroupAclAccessManager::getAccessPowsValue("VIEW"));
 }
 /**
  * Load acl and customer group acl fixtures, in a new transaction level.
  * They will be rollback on tear-down.
  */
 protected function loadAclFixtures()
 {
     Propel::getConnection()->beginTransaction();
     $aclXmlFileLoader = new AclXmlFileloader(new Translator($this->container));
     $aclXmlFileLoader->load($this->getStubModule("ModuleValidConfigFile"));
     foreach (static::$TEST_ACL_CODES as $aclCode) {
         $this->testAcls[] = AclQuery::create()->findOneByCode($aclCode);
     }
     foreach (static::$expectedAclFixturesAccesses as $customerGroupCode => $acls) {
         foreach ($acls as $aclCode => $accesses) {
             foreach ($accesses as $access) {
                 /** @var CustomerGroupAclQuery $query */
                 $query = CustomerGroupAclQuery::create();
                 $query->useCustomerGroupQuery()->filterByCode($customerGroupCode)->endUse();
                 $query->useAclQuery()->filterByCode($aclCode)->endUse();
                 $query->filterByType(CustomerGroupAclAccessManager::getAccessPowsValue($access));
                 $this->testCustomerGroupAcls[] = $query->findOne();
             }
         }
     }
     $this->aclFixturesLoaded = true;
 }