Auth.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\User\Controller\Adminhtml;
  7. use Magento\Framework\Encryption\Helper\Security;
  8. use Magento\Backend\App\AbstractAction;
  9. use Magento\Backend\App\Action\Context;
  10. use Magento\User\Model\UserFactory;
  11. use Magento\Framework\Exception\LocalizedException;
  12. /**
  13. * \Magento\User Auth controller
  14. */
  15. abstract class Auth extends AbstractAction
  16. {
  17. /**
  18. * User model factory
  19. *
  20. * @var UserFactory
  21. */
  22. protected $_userFactory;
  23. /**
  24. * Construct
  25. *
  26. * @param Context $context
  27. * @param UserFactory $userFactory
  28. */
  29. public function __construct(
  30. Context $context,
  31. UserFactory $userFactory
  32. ) {
  33. parent::__construct($context);
  34. $this->_userFactory = $userFactory;
  35. }
  36. /**
  37. * Check if password reset token is valid
  38. *
  39. * @param int $userId
  40. * @param string $resetPasswordToken
  41. * @return void
  42. * @throws LocalizedException
  43. */
  44. protected function _validateResetPasswordLinkToken($userId, $resetPasswordToken)
  45. {
  46. if (!is_int(
  47. $userId
  48. ) || !is_string(
  49. $resetPasswordToken
  50. ) || empty($resetPasswordToken) || empty($userId) || $userId < 0
  51. ) {
  52. throw new LocalizedException(__('Please correct the password reset token.'));
  53. }
  54. /** @var $user \Magento\User\Model\User */
  55. $user = $this->_userFactory->create()->load($userId);
  56. if (!$user->getId()) {
  57. throw new LocalizedException(
  58. __('Please specify the correct account and try again.')
  59. );
  60. }
  61. $userToken = $user->getRpToken();
  62. if (!Security::compareStrings($userToken, $resetPasswordToken) || $user->isResetPasswordLinkTokenExpired()) {
  63. throw new LocalizedException(__('Your password reset link has expired.'));
  64. }
  65. }
  66. /**
  67. * Check if user has permissions to access this controller
  68. *
  69. * @return bool
  70. */
  71. protected function _isAllowed()
  72. {
  73. return true;
  74. }
  75. }