Skip to content

Commit 4047ddf

Browse files
committed
MAGETWO-71639: Parent ID is hardcoded as "1" in the \Magento\Setup\Fixtures\AdminUsersFixture
1 parent fcd06a3 commit 4047ddf

File tree

1 file changed

+64
-24
lines changed

1 file changed

+64
-24
lines changed

setup/src/Magento/Setup/Fixtures/AdminUsersFixture.php

Lines changed: 64 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66

77
namespace Magento\Setup\Fixtures;
88

9+
use Magento\Authorization\Model\Acl\Role\Group;
10+
use Magento\Authorization\Model\RoleFactory;
11+
use Magento\Authorization\Model\RulesFactory;
12+
use Magento\Authorization\Model\UserContextInterface;
13+
use Magento\Framework\Acl\RootResource;
14+
use Magento\User\Model\ResourceModel\User\CollectionFactory as UserCollectionFactory;
15+
use Magento\User\Model\UserFactory;
16+
917
/**
1018
* Generate admin users
1119
*
@@ -21,36 +29,52 @@ class AdminUsersFixture extends Fixture
2129
protected $priority = 5;
2230

2331
/**
24-
* @var \Magento\User\Model\UserFactory
32+
* @var UserFactory
2533
*/
2634
private $userFactory;
2735

2836
/**
29-
* @var \Magento\Authorization\Model\RoleFactory
37+
* @var RoleFactory
3038
*/
3139
private $roleFactory;
3240

3341
/**
34-
* @var \Magento\User\Model\ResourceModel\User\CollectionFactory
42+
* @var UserCollectionFactory
3543
*/
3644
private $userCollectionFactory;
3745

3846
/**
39-
* @param \Magento\User\Model\UserFactory $userFactory
40-
* @param \Magento\User\Model\ResourceModel\User\CollectionFactory $userCollectionFactory
41-
* @param \Magento\Authorization\Model\RoleFactory $roleFactory
47+
* @var RulesFactory
48+
*/
49+
private $rulesFactory;
50+
51+
/**
52+
* @var RootResource
53+
*/
54+
private $rootResource;
55+
56+
/**
4257
* @param FixtureModel $fixtureModel
58+
* @param UserFactory $userFactory
59+
* @param UserCollectionFactory $userCollectionFactory
60+
* @param RoleFactory $roleFactory
61+
* @param RulesFactory $rulesFactory
62+
* @param RootResource $rootResource
4363
*/
4464
public function __construct(
45-
\Magento\User\Model\UserFactory $userFactory,
46-
\Magento\User\Model\ResourceModel\User\CollectionFactory $userCollectionFactory,
47-
\Magento\Authorization\Model\RoleFactory $roleFactory,
48-
FixtureModel $fixtureModel
65+
FixtureModel $fixtureModel,
66+
UserFactory $userFactory,
67+
UserCollectionFactory $userCollectionFactory,
68+
RoleFactory $roleFactory,
69+
RulesFactory $rulesFactory,
70+
RootResource $rootResource
4971
) {
5072
parent::__construct($fixtureModel);
5173
$this->userFactory = $userFactory;
5274
$this->roleFactory = $roleFactory;
5375
$this->userCollectionFactory = $userCollectionFactory;
76+
$this->rulesFactory = $rulesFactory;
77+
$this->rootResource = $rootResource;
5478
}
5579

5680
/**
@@ -65,30 +89,18 @@ public function execute()
6589
return;
6690
}
6791

68-
$defaultAdminUser = $this->userFactory->create()->loadByUsername('admin');
69-
$defaultAdminRole = $this->roleFactory->create()->load($defaultAdminUser->getAclRole());
92+
$role = $this->createAdministratorRole();
7093

7194
for ($i = $adminUsersStartIndex; $i <= $adminUsersNumber; $i++) {
7295
$adminUser = $this->userFactory->create();
73-
$adminUser
96+
$adminUser->setRoleId($role->getId())
7497
->setEmail('admin' . $i . '@example.com')
7598
->setFirstName('Firstname')
7699
->setLastName('Lastname')
77100
->setUserName('admin' . $i)
78101
->setPassword('123123q')
79102
->setIsActive(1);
80103
$adminUser->save();
81-
82-
$role = $this->roleFactory->create();
83-
$role
84-
->setUserId($adminUser->getId())
85-
->setRoleName('admin')
86-
->setRoleType($defaultAdminRole->getRoleType())
87-
->setUserType($defaultAdminRole->getUserType())
88-
->setTreeLevel($defaultAdminRole->getTreeLevel())
89-
->setSortOrder($defaultAdminRole->getSortOrder())
90-
->setParentId(1);
91-
$role->save();
92104
}
93105
}
94106

@@ -109,4 +121,32 @@ public function introduceParamLabels()
109121
'admin_users' => 'Admin Users'
110122
];
111123
}
124+
125+
/**
126+
* Create administrator role with all privileges.
127+
*
128+
* @return \Magento\Authorization\Model\Role
129+
*/
130+
private function createAdministratorRole()
131+
{
132+
$role = $this->roleFactory->create();
133+
$role->setParentId(0)
134+
->setTreeLevel(1)
135+
->setSortOrder(1)
136+
->setRoleType(Group::ROLE_TYPE)
137+
->setUserId(0)
138+
->setUserType(UserContextInterface::USER_TYPE_ADMIN)
139+
->setRoleName('Example Administrator');
140+
$role->save();
141+
142+
/** @var \Magento\Authorization\Model\Rules $rule */
143+
$rule = $this->rulesFactory->create();
144+
$rule->setRoleId($role->getId())
145+
->setResourceId($this->rootResource->getId())
146+
->setPrivilegies(null)
147+
->setPermission('allow');
148+
$rule->save();
149+
150+
return $role;
151+
}
112152
}

0 commit comments

Comments
 (0)