11
11
use Magento \Authorization \Model \Acl \Role \Group as RoleGroup ;
12
12
use Magento \Authorization \Model \UserContextInterface ;
13
13
use Magento \Framework \Controller \ResultFactory ;
14
+ use Magento \Framework \Exception \LocalizedException ;
14
15
use Magento \Framework \Exception \State \UserLockedException ;
15
16
use Magento \Security \Model \SecurityCookie ;
16
17
@@ -77,10 +78,8 @@ public function execute()
77
78
78
79
$ rid = $ this ->getRequest ()->getParam ('role_id ' , false );
79
80
$ resource = $ this ->getRequest ()->getParam ('resource ' , false );
80
- $ roleUsers = $ this ->getRequest ()->getParam ('in_role_user ' , null );
81
- parse_str ($ roleUsers , $ roleUsers );
82
- $ roleUsers = array_keys ($ roleUsers );
83
-
81
+ $ oldRoleUsers = $ this ->parseRequestVariable ('in_role_user_old ' );
82
+ $ roleUsers = $ this ->parseRequestVariable ('in_role_user ' );
84
83
$ isAll = $ this ->getRequest ()->getParam ('all ' );
85
84
if ($ isAll ) {
86
85
$ resource = [$ this ->_objectManager ->get (\Magento \Framework \Acl \RootResource::class)->getId ()];
@@ -106,28 +105,24 @@ public function execute()
106
105
$ role ->save ();
107
106
108
107
$ this ->_rulesFactory ->create ()->setRoleId ($ role ->getId ())->setResources ($ resource )->saveRel ();
109
-
110
- $ this ->processPreviousUsers ($ role );
111
-
112
- foreach ($ roleUsers as $ nRuid ) {
113
- $ this ->_addUserToRole ($ nRuid , $ role ->getId ());
114
- }
115
- $ this ->messageManager ->addSuccess (__ ('You saved the role. ' ));
108
+ $ this ->processPreviousUsers ($ role , $ oldRoleUsers );
109
+ $ this ->processCurrentUsers ($ role , $ roleUsers );
110
+ $ this ->messageManager ->addSuccessMessage (__ ('You saved the role. ' ));
116
111
} catch (UserLockedException $ e ) {
117
112
$ this ->_auth ->logout ();
118
113
$ this ->getSecurityCookie ()->setLogoutReasonCookie (
119
114
\Magento \Security \Model \AdminSessionsManager::LOGOUT_REASON_USER_LOCKED
120
115
);
121
116
return $ resultRedirect ->setPath ('* ' );
122
117
} catch (\Magento \Framework \Exception \AuthenticationException $ e ) {
123
- $ this ->messageManager ->addError (
118
+ $ this ->messageManager ->addErrorMessage (
124
119
__ ('The password entered for the current user is invalid. Verify the password and try again. ' )
125
120
);
126
121
return $ this ->saveDataToSessionAndRedirect ($ role , $ this ->getRequest ()->getPostValue (), $ resultRedirect );
127
122
} catch (\Magento \Framework \Exception \LocalizedException $ e ) {
128
- $ this ->messageManager ->addError ($ e ->getMessage ());
123
+ $ this ->messageManager ->addErrorMessage ($ e ->getMessage ());
129
124
} catch (\Exception $ e ) {
130
- $ this ->messageManager ->addError (__ ('An error occurred while saving this role. ' ));
125
+ $ this ->messageManager ->addErrorMessage (__ ('An error occurred while saving this role. ' ));
131
126
}
132
127
133
128
return $ resultRedirect ->setPath ('*/*/ ' );
@@ -151,32 +146,64 @@ protected function validateUser()
151
146
return $ this ;
152
147
}
153
148
149
+ /**
150
+ * Parse request value from string
151
+ *
152
+ * @param string $paramName
153
+ * @return array
154
+ */
155
+ private function parseRequestVariable ($ paramName ): array
156
+ {
157
+ $ value = $ this ->getRequest ()->getParam ($ paramName , null );
158
+ parse_str ($ value , $ value );
159
+ $ value = array_keys ($ value );
160
+ return $ value ;
161
+ }
162
+
154
163
/**
155
164
* Process previous users
156
165
*
157
166
* @param \Magento\Authorization\Model\Role $role
167
+ * @param array $oldRoleUsers
158
168
* @return $this
159
169
* @throws \Exception
160
170
*/
161
- protected function processPreviousUsers (\Magento \Authorization \Model \Role $ role)
171
+ protected function processPreviousUsers (\Magento \Authorization \Model \Role $ role, array $ oldRoleUsers ): self
162
172
{
163
- $ oldRoleUsers = $ this ->getRequest ()->getParam ('in_role_user_old ' );
164
- parse_str ($ oldRoleUsers , $ oldRoleUsers );
165
- $ oldRoleUsers = array_keys ($ oldRoleUsers );
166
-
167
173
foreach ($ oldRoleUsers as $ oUid ) {
168
174
$ this ->_deleteUserFromRole ($ oUid , $ role ->getId ());
169
175
}
170
176
171
177
return $ this ;
172
178
}
173
179
180
+ /**
181
+ * Processes users to be assigned to roles
182
+ *
183
+ * @param \Magento\Authorization\Model\Role $role
184
+ * @param array $roleUsers
185
+ * @return $this
186
+ */
187
+ private function processCurrentUsers (\Magento \Authorization \Model \Role $ role , array $ roleUsers ): self
188
+ {
189
+ foreach ($ roleUsers as $ nRuid ) {
190
+ try {
191
+ $ this ->_addUserToRole ($ nRuid , $ role ->getId ());
192
+ } catch (LocalizedException $ e ) {
193
+ $ this ->messageManager ->addErrorMessage ($ e ->getMessage ());
194
+ }
195
+ }
196
+
197
+ return $ this ;
198
+ }
199
+
174
200
/**
175
201
* Assign user to role
176
202
*
177
203
* @param int $userId
178
204
* @param int $roleId
179
205
* @return bool
206
+ * @throws LocalizedException
180
207
*/
181
208
protected function _addUserToRole ($ userId , $ roleId )
182
209
{
0 commit comments