Skip to content

Commit cdb3342

Browse files
author
Stanislav Idolov
authored
ENGCOM-2282: Admin user auth controller refactor #16560
2 parents be0e6b5 + 60ab290 commit cdb3342

File tree

3 files changed

+82
-28
lines changed

3 files changed

+82
-28
lines changed

app/code/Magento/User/Controller/Adminhtml/Auth.php

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,32 @@
66
namespace Magento\User\Controller\Adminhtml;
77

88
use Magento\Framework\Encryption\Helper\Security;
9+
use Magento\Backend\App\AbstractAction;
10+
use Magento\Backend\App\Action\Context;
11+
use Magento\User\Model\UserFactory;
12+
use Magento\Framework\Exception\LocalizedException;
913

1014
/**
1115
* \Magento\User Auth controller
1216
*/
13-
abstract class Auth extends \Magento\Backend\App\AbstractAction
17+
abstract class Auth extends AbstractAction
1418
{
1519
/**
1620
* User model factory
1721
*
18-
* @var \Magento\User\Model\UserFactory
22+
* @var UserFactory
1923
*/
2024
protected $_userFactory;
2125

2226
/**
2327
* Construct
2428
*
25-
* @param \Magento\Backend\App\Action\Context $context
26-
* @param \Magento\User\Model\UserFactory $userFactory
29+
* @param Context $context
30+
* @param UserFactory $userFactory
2731
*/
2832
public function __construct(
29-
\Magento\Backend\App\Action\Context $context,
30-
\Magento\User\Model\UserFactory $userFactory
33+
Context $context,
34+
UserFactory $userFactory
3135
) {
3236
parent::__construct($context);
3337
$this->_userFactory = $userFactory;
@@ -39,7 +43,7 @@ public function __construct(
3943
* @param int $userId
4044
* @param string $resetPasswordToken
4145
* @return void
42-
* @throws \Magento\Framework\Exception\LocalizedException
46+
* @throws LocalizedException
4347
*/
4448
protected function _validateResetPasswordLinkToken($userId, $resetPasswordToken)
4549
{
@@ -49,20 +53,20 @@ protected function _validateResetPasswordLinkToken($userId, $resetPasswordToken)
4953
$resetPasswordToken
5054
) || empty($resetPasswordToken) || empty($userId) || $userId < 0
5155
) {
52-
throw new \Magento\Framework\Exception\LocalizedException(__('Please correct the password reset token.'));
56+
throw new LocalizedException(__('Please correct the password reset token.'));
5357
}
5458

5559
/** @var $user \Magento\User\Model\User */
5660
$user = $this->_userFactory->create()->load($userId);
5761
if (!$user->getId()) {
58-
throw new \Magento\Framework\Exception\LocalizedException(
62+
throw new LocalizedException(
5963
__('Please specify the correct account and try again.')
6064
);
6165
}
6266

6367
$userToken = $user->getRpToken();
6468
if (!Security::compareStrings($userToken, $resetPasswordToken) || $user->isResetPasswordLinkTokenExpired()) {
65-
throw new \Magento\Framework\Exception\LocalizedException(__('Your password reset link has expired.'));
69+
throw new LocalizedException(__('Your password reset link has expired.'));
6670
}
6771
}
6872

app/code/Magento/User/Controller/Adminhtml/Auth/Forgotpassword.php

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,54 @@
77
namespace Magento\User\Controller\Adminhtml\Auth;
88

99
use Magento\Security\Model\SecurityManager;
10+
use Magento\Framework\App\ObjectManager;
11+
use Magento\Backend\App\Action\Context;
12+
use Magento\User\Model\UserFactory;
13+
use Magento\User\Model\ResourceModel\User\CollectionFactory;
14+
use Magento\Framework\Validator\EmailAddress;
15+
use Magento\Security\Model\PasswordResetRequestEvent;
16+
use Magento\Framework\Exception\SecurityViolationException;
17+
use Magento\User\Controller\Adminhtml\Auth;
18+
use Magento\Backend\Helper\Data;
1019

11-
class Forgotpassword extends \Magento\User\Controller\Adminhtml\Auth
20+
class Forgotpassword extends Auth
1221
{
1322
/**
1423
* @var SecurityManager
1524
*/
1625
protected $securityManager;
1726

1827
/**
19-
* @param \Magento\Backend\App\Action\Context $context
20-
* @param \Magento\User\Model\UserFactory $userFactory
21-
* @param \Magento\Security\Model\SecurityManager $securityManager
28+
* User model factory
29+
*
30+
* @var CollectionFactory
31+
*/
32+
private $userCollectionFactory;
33+
34+
/**
35+
* @var Data
36+
*/
37+
private $backendDataHelper;
38+
39+
/**
40+
* @param Context $context
41+
* @param UserFactory $userFactory
42+
* @param SecurityManager $securityManager
43+
* @param CollectionFactory $userCollectionFactory
2244
*/
2345
public function __construct(
24-
\Magento\Backend\App\Action\Context $context,
25-
\Magento\User\Model\UserFactory $userFactory,
26-
\Magento\Security\Model\SecurityManager $securityManager
46+
Context $context,
47+
UserFactory $userFactory,
48+
SecurityManager $securityManager,
49+
CollectionFactory $userCollectionFactory = null,
50+
Data $backendDataHelper = null
2751
) {
2852
parent::__construct($context, $userFactory);
2953
$this->securityManager = $securityManager;
54+
$this->userCollectionFactory = $userCollectionFactory ?:
55+
ObjectManager::getInstance()->get(CollectionFactory::class);
56+
$this->backendDataHelper = $backendDataHelper ?:
57+
ObjectManager::getInstance()->get(Data::class);
3058
}
3159

3260
/**
@@ -44,18 +72,18 @@ public function execute()
4472
$resultRedirect = $this->resultRedirectFactory->create();
4573
if (!empty($email) && !empty($params)) {
4674
// Validate received data to be an email address
47-
if (\Zend_Validate::is($email, \Magento\Framework\Validator\EmailAddress::class)) {
75+
if (\Zend_Validate::is($email, EmailAddress::class)) {
4876
try {
4977
$this->securityManager->performSecurityCheck(
50-
\Magento\Security\Model\PasswordResetRequestEvent::ADMIN_PASSWORD_RESET_REQUEST,
78+
PasswordResetRequestEvent::ADMIN_PASSWORD_RESET_REQUEST,
5179
$email
5280
);
53-
} catch (\Magento\Framework\Exception\SecurityViolationException $exception) {
81+
} catch (SecurityViolationException $exception) {
5482
$this->messageManager->addErrorMessage($exception->getMessage());
5583
return $resultRedirect->setPath('admin');
5684
}
57-
$collection = $this->_objectManager->get(\Magento\User\Model\ResourceModel\User\Collection::class);
5885
/** @var $collection \Magento\User\Model\ResourceModel\User\Collection */
86+
$collection = $this->userCollectionFactory->create();
5987
$collection->addFieldToFilter('email', $email);
6088
$collection->load(false);
6189

@@ -65,9 +93,7 @@ public function execute()
6593
/** @var \Magento\User\Model\User $user */
6694
$user = $this->_userFactory->create()->load($item->getId());
6795
if ($user->getId()) {
68-
$newPassResetToken = $this->_objectManager->get(
69-
\Magento\User\Helper\Data::class
70-
)->generateResetPasswordLinkToken();
96+
$newPassResetToken = $this->backendDataHelper->generateResetPasswordLinkToken();
7197
$user->changeResetPasswordLinkToken($newPassResetToken);
7298
$user->save();
7399
$user->sendPasswordResetConfirmationEmail();
@@ -86,7 +112,7 @@ public function execute()
86112
$this->messageManager->addSuccess(__('We\'ll email you a link to reset your password.'));
87113
// @codingStandardsIgnoreEnd
88114
$this->getResponse()->setRedirect(
89-
$this->_objectManager->get(\Magento\Backend\Helper\Data::class)->getHomePageUrl()
115+
$this->backendDataHelper->getHomePageUrl()
90116
);
91117
return;
92118
} else {

app/code/Magento/User/Controller/Adminhtml/Auth/ResetPasswordPost.php

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,32 @@
66
*/
77
namespace Magento\User\Controller\Adminhtml\Auth;
88

9-
class ResetPasswordPost extends \Magento\User\Controller\Adminhtml\Auth
9+
use Magento\User\Controller\Adminhtml\Auth;
10+
use Magento\Backend\App\Action\Context;
11+
use Magento\Framework\App\ObjectManager;
12+
use Magento\Backend\Helper\Data;
13+
use Magento\User\Model\UserFactory;
14+
15+
class ResetPasswordPost extends Auth
1016
{
17+
/**
18+
* @var Data
19+
*/
20+
private $backendDataHelper;
21+
22+
/**
23+
* @param Context $context
24+
* @param UserFactory $userFactory
25+
* @param Data $backendDataHelper
26+
*/
27+
public function __construct(
28+
Context $context,
29+
UserFactory $userFactory,
30+
Data $backendDataHelper = null
31+
) {
32+
parent::__construct($context, $userFactory);
33+
$this->backendDataHelper = $backendDataHelper ?: ObjectManager::getInstance()->get(Data::class);
34+
}
1135
/**
1236
* Reset forgotten password
1337
*
@@ -27,7 +51,7 @@ public function execute()
2751
} catch (\Exception $exception) {
2852
$this->messageManager->addError(__('Your password reset link has expired.'));
2953
$this->getResponse()->setRedirect(
30-
$this->_objectManager->get(\Magento\Backend\Helper\Data::class)->getHomePageUrl()
54+
$this->backendDataHelper->getHomePageUrl()
3155
);
3256
return;
3357
}
@@ -53,7 +77,7 @@ public function execute()
5377
$user->save();
5478
$this->messageManager->addSuccess(__('You updated your password.'));
5579
$this->getResponse()->setRedirect(
56-
$this->_objectManager->get(\Magento\Backend\Helper\Data::class)->getHomePageUrl()
80+
$this->backendDataHelper->getHomePageUrl()
5781
);
5882
}
5983
} catch (\Magento\Framework\Validator\Exception $exception) {

0 commit comments

Comments
 (0)