/** * Update de la table group */ private function updateRights($usersRights) { if (true === is_array($usersRights)) { $this->writeln('<info>- Updating groups: </info>' . "\n"); $this->em->getConnection()->executeQuery('DELETE FROM `acl_classes` WHERE 1=1'); $this->em->getConnection()->executeQuery('DELETE FROM `acl_entries` WHERE 1=1'); $this->em->getConnection()->executeQuery('DELETE FROM `acl_object_identities` WHERE 1=1'); $this->em->getConnection()->executeQuery('DELETE FROM `acl_object_identity_ancestors` WHERE 1=1'); $this->em->getConnection()->executeQuery('DELETE FROM `acl_security_identities` WHERE 1=1'); // First create all groups foreach ($usersRights as $group_identifier => $rights) { $this->writeln(sprintf('Checking group: %s', $group_identifier)); // Création du group si introuvable if (null === ($group = $this->em->getRepository('BackBee\\Security\\Group')->findOneBy(array('_name' => $group_identifier)))) { // ensure group exists $group = new Group(); $group->setDescription(isset($rights['description']) ? $rights['description'] : $group_identifier)->setName($group_identifier); $this->em->persist($group); $this->em->flush($group); $this->writeln(sprintf("\t- New group created: `%s`", $group_identifier)); } } // Then apply rights foreach ($usersRights as $group_identifier => $rights) { $this->writeln(sprintf('Treating group: %s', $group_identifier)); $securityIdentity = new UserSecurityIdentity($group->getObjectIdentifier(), 'BackBee\\Security\\Group'); // Sites if (true === array_key_exists('sites', $rights)) { $sites = $this->addSiteRights($rights['sites'], $this->aclProvider, $securityIdentity); // Layouts if (true === array_key_exists('layouts', $rights)) { $this->addLayoutRights($rights['layouts'], $sites, $this->aclProvider, $securityIdentity); $this->writeln("\t- Rights set on sites and layouts for group"); } // Pages if (true === array_key_exists('pages', $rights)) { $this->addPageRights($rights['pages'], $this->aclProvider, $securityIdentity); $this->writeln("\t- Rights set on pages for group"); } // Mediafolders if (true === array_key_exists('mediafolders', $rights)) { $this->addFolderRights($rights['mediafolders'], $this->aclProvider, $securityIdentity); $this->writeln("\t- Rights set on library folders for group"); } // Contents if (true === array_key_exists('contents', $rights)) { $this->addContentRights($rights['contents'], $this->aclProvider, $securityIdentity); $this->writeln("\t- Rights set on contents for group"); } // Bundles if (true === array_key_exists('bundles', $rights)) { $this->addBundleRights($rights['bundles'], $this->aclProvider, $securityIdentity); $this->writeln("\t- Rights set on bundles for group"); } // Groups if (true === array_key_exists('groups', $rights)) { $this->addGroupRights($rights['groups'], $this->aclProvider, $securityIdentity); $this->writeln("\t- Rights set on groups for group"); } // Users if (true === array_key_exists('users', $rights)) { $this->addUserRights($rights['users'], $this->aclProvider, $securityIdentity); $this->writeln("\t- Rights set on users for group"); } } else { $this->writeln(sprintf("\t- No site rights defined for %s group, skip", $group_identifier)); } } } }