@@ -30,6 +30,12 @@ class Role implements RevertibleDataFixtureInterface
30
30
'user_type ' => UserContextInterface::USER_TYPE_ADMIN
31
31
];
32
32
33
+ private const DEFAULT_DATA_RULES = [
34
+ 'id ' => null ,
35
+ 'role_id ' => null ,
36
+ 'resources ' => ['Magento_Backend::all ' ]
37
+ ];
38
+
33
39
/**
34
40
* @var RoleFactory
35
41
*/
@@ -45,18 +51,26 @@ class Role implements RevertibleDataFixtureInterface
45
51
*/
46
52
private $ roleResourceModel ;
47
53
54
+ /**
55
+ * @var RulesFactory
56
+ */
57
+ private $ rulesFactory ;
58
+
48
59
/**
49
60
* @param RoleFactory $roleFactory
50
61
* @param RoleResource $roleResourceModel
62
+ * @param RulesFactory $rulesFactory
51
63
* @param ProcessorInterface $dataProcessor
52
64
*/
53
65
public function __construct (
54
66
RoleFactory $ roleFactory ,
55
67
RoleResource $ roleResourceModel ,
68
+ RulesFactory $ rulesFactory ,
56
69
ProcessorInterface $ dataProcessor
57
70
) {
58
71
$ this ->roleFactory = $ roleFactory ;
59
72
$ this ->roleResourceModel = $ roleResourceModel ;
73
+ $ this ->rulesFactory = $ rulesFactory ;
60
74
$ this ->dataProcessor = $ dataProcessor ;
61
75
}
62
76
@@ -66,9 +80,15 @@ public function __construct(
66
80
public function apply (array $ data = []): ?DataObject
67
81
{
68
82
$ role = $ this ->roleFactory ->create ();
69
- $ role ->setData ($ this ->prepareData ($ data ));
83
+ $ role ->setData ($ this ->prepareData (array_diff_key ( $ data, self :: DEFAULT_DATA_RULES ) ));
70
84
$ this ->roleResourceModel ->save ($ role );
71
85
86
+ $ rules = $ this ->rulesFactory ->create ();
87
+ $ data = array_diff_key ($ data , self ::DEFAULT_DATA );
88
+ $ rules ->setRoleId ($ role ->getId () ?? null );
89
+ $ rules ->setResources ($ data ['resources ' ] ?? []);
90
+ $ rules ->saveRel ();
91
+
72
92
return $ role ;
73
93
}
74
94
0 commit comments