123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Authorization\Setup\Patch\Data;
- use Magento\Framework\App\ResourceConnection;
- use Magento\Framework\Setup\ModuleDataSetupInterface;
- use Magento\Framework\Setup\Patch\DataPatchInterface;
- use Magento\Framework\Setup\Patch\PatchVersionInterface;
- use Magento\Authorization\Model\Acl\Role\Group as RoleGroup;
- use Magento\Authorization\Model\UserContextInterface;
- /**
- * Class InitializeAuthRoles
- * @package Magento\Authorization\Setup\Patch
- */
- class InitializeAuthRoles implements DataPatchInterface, PatchVersionInterface
- {
- /**
- * @var ModuleDataSetupInterface
- */
- private $moduleDataSetup;
- /**
- * @var \Magento\Authorization\Setup\AuthorizationFactory
- */
- private $authFactory;
- /**
- * InitializeAuthRoles constructor.
- * @param ModuleDataSetupInterface $moduleDataSetup
- * @param \Magento\Authorization\Setup\AuthorizationFactory $authorizationFactory
- */
- public function __construct(
- ModuleDataSetupInterface $moduleDataSetup,
- \Magento\Authorization\Setup\AuthorizationFactory $authorizationFactory
- ) {
- $this->moduleDataSetup = $moduleDataSetup;
- $this->authFactory = $authorizationFactory;
- }
- /**
- * {@inheritdoc}
- */
- public function apply()
- {
- $roleCollection = $this->authFactory->createRoleCollection()
- ->addFieldToFilter('parent_id', 0)
- ->addFieldToFilter('tree_level', 1)
- ->addFieldToFilter('role_type', RoleGroup::ROLE_TYPE)
- ->addFieldToFilter('user_id', 0)
- ->addFieldToFilter('user_type', UserContextInterface::USER_TYPE_ADMIN)
- ->addFieldToFilter('role_name', 'Administrators');
- if ($roleCollection->count() == 0) {
- $admGroupRole = $this->authFactory->createRole()->setData(
- [
- 'parent_id' => 0,
- 'tree_level' => 1,
- 'sort_order' => 1,
- 'role_type' => RoleGroup::ROLE_TYPE,
- 'user_id' => 0,
- 'user_type' => UserContextInterface::USER_TYPE_ADMIN,
- 'role_name' => 'Administrators',
- ]
- )->save();
- } else {
- /** @var \Magento\Authorization\Model\ResourceModel\Role $item */
- foreach ($roleCollection as $item) {
- $admGroupRole = $item;
- break;
- }
- }
- $rulesCollection = $this->authFactory->createRulesCollection()
- ->addFieldToFilter('role_id', $admGroupRole->getId())
- ->addFieldToFilter('resource_id', 'all');
- if ($rulesCollection->count() == 0) {
- $this->authFactory->createRules()->setData(
- [
- 'role_id' => $admGroupRole->getId(),
- 'resource_id' => 'Magento_Backend::all',
- 'privileges' => null,
- 'permission' => 'allow',
- ]
- )->save();
- } else {
- /** @var \Magento\Authorization\Model\Rules $rule */
- foreach ($rulesCollection as $rule) {
- $rule->setData('resource_id', 'Magento_Backend::all')->save();
- }
- }
- /**
- * Delete rows by condition from authorization_rule
- */
- $tableName = $this->moduleDataSetup->getTable('authorization_rule');
- if ($tableName) {
- $this->moduleDataSetup->getConnection()->delete(
- $tableName,
- ['resource_id = ?' => 'admin/system/tools/compiler']
- );
- }
- }
- /**
- * {@inheritdoc}
- */
- public static function getDependencies()
- {
- return [];
- }
- /**
- * {@inheritdoc}
- */
- public static function getVersion()
- {
- return '2.0.0';
- }
- /**
- * {@inheritdoc}
- */
- public function getAliases()
- {
- return [];
- }
- }
|