Skip to content
This repository was archived by the owner on Apr 29, 2019. It is now read-only.

Commit 18185e6

Browse files
author
olysenko
committed
Merge remote-tracking branch 'origin/MAGETWO-95536' into chaika_november
2 parents da1a96c + 7e42eba commit 18185e6

File tree

2 files changed

+51
-22
lines changed

2 files changed

+51
-22
lines changed

app/code/Magento/Integration/Plugin/Model/AdminUser.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
67
namespace Magento\Integration\Plugin\Model;
78

89
use Magento\Integration\Model\AdminTokenService;
@@ -31,14 +32,15 @@ public function __construct(
3132
*
3233
* @param \Magento\User\Model\User $subject
3334
* @param \Magento\Framework\DataObject $object
34-
* @return $this
35+
* @return \Magento\User\Model\User
36+
* @throws \Magento\Framework\Exception\LocalizedException
3537
*/
3638
public function afterSave(
3739
\Magento\User\Model\User $subject,
3840
\Magento\Framework\DataObject $object
39-
) {
41+
): \Magento\User\Model\User {
4042
$isActive = $object->getIsActive();
41-
if (isset($isActive) && $isActive == 0) {
43+
if ($isActive !== null && $isActive == 0) {
4244
$this->adminTokenService->revokeAdminAccessToken($object->getId());
4345
}
4446
return $subject;

app/code/Magento/User/Controller/Adminhtml/User/Role/SaveRole.php

Lines changed: 46 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Magento\Authorization\Model\Acl\Role\Group as RoleGroup;
1212
use Magento\Authorization\Model\UserContextInterface;
1313
use Magento\Framework\Controller\ResultFactory;
14+
use Magento\Framework\Exception\LocalizedException;
1415
use Magento\Framework\Exception\State\UserLockedException;
1516
use Magento\Security\Model\SecurityCookie;
1617

@@ -77,10 +78,8 @@ public function execute()
7778

7879
$rid = $this->getRequest()->getParam('role_id', false);
7980
$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');
8483
$isAll = $this->getRequest()->getParam('all');
8584
if ($isAll) {
8685
$resource = [$this->_objectManager->get(\Magento\Framework\Acl\RootResource::class)->getId()];
@@ -106,28 +105,24 @@ public function execute()
106105
$role->save();
107106

108107
$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.'));
116111
} catch (UserLockedException $e) {
117112
$this->_auth->logout();
118113
$this->getSecurityCookie()->setLogoutReasonCookie(
119114
\Magento\Security\Model\AdminSessionsManager::LOGOUT_REASON_USER_LOCKED
120115
);
121116
return $resultRedirect->setPath('*');
122117
} catch (\Magento\Framework\Exception\AuthenticationException $e) {
123-
$this->messageManager->addError(
118+
$this->messageManager->addErrorMessage(
124119
__('The password entered for the current user is invalid. Verify the password and try again.')
125120
);
126121
return $this->saveDataToSessionAndRedirect($role, $this->getRequest()->getPostValue(), $resultRedirect);
127122
} catch (\Magento\Framework\Exception\LocalizedException $e) {
128-
$this->messageManager->addError($e->getMessage());
123+
$this->messageManager->addErrorMessage($e->getMessage());
129124
} 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.'));
131126
}
132127

133128
return $resultRedirect->setPath('*/*/');
@@ -151,32 +146,64 @@ protected function validateUser()
151146
return $this;
152147
}
153148

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+
154163
/**
155164
* Process previous users
156165
*
157166
* @param \Magento\Authorization\Model\Role $role
167+
* @param array $oldRoleUsers
158168
* @return $this
159169
* @throws \Exception
160170
*/
161-
protected function processPreviousUsers(\Magento\Authorization\Model\Role $role)
171+
protected function processPreviousUsers(\Magento\Authorization\Model\Role $role, array $oldRoleUsers): self
162172
{
163-
$oldRoleUsers = $this->getRequest()->getParam('in_role_user_old');
164-
parse_str($oldRoleUsers, $oldRoleUsers);
165-
$oldRoleUsers = array_keys($oldRoleUsers);
166-
167173
foreach ($oldRoleUsers as $oUid) {
168174
$this->_deleteUserFromRole($oUid, $role->getId());
169175
}
170176

171177
return $this;
172178
}
173179

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+
174200
/**
175201
* Assign user to role
176202
*
177203
* @param int $userId
178204
* @param int $roleId
179205
* @return bool
206+
* @throws LocalizedException
180207
*/
181208
protected function _addUserToRole($userId, $roleId)
182209
{

0 commit comments

Comments
 (0)