TrackAdminNewPasswordObserver.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\User\Observer\Backend;
  7. use Magento\Framework\Event\Observer as EventObserver;
  8. use Magento\Framework\Event\ObserverInterface;
  9. use Magento\User\Model\User;
  10. /**
  11. * User backend observer model for passwords
  12. */
  13. class TrackAdminNewPasswordObserver implements ObserverInterface
  14. {
  15. /**
  16. * Backend configuration interface
  17. *
  18. * @var \Magento\User\Model\Backend\Config\ObserverConfig
  19. */
  20. protected $observerConfig;
  21. /**
  22. * Admin user resource model
  23. *
  24. * @var \Magento\User\Model\ResourceModel\User
  25. */
  26. protected $userResource;
  27. /**
  28. * Backend authorization session
  29. *
  30. * @var \Magento\Backend\Model\Auth\Session
  31. */
  32. protected $authSession;
  33. /**
  34. * Message manager interface
  35. *
  36. * @var \Magento\Framework\Message\ManagerInterface
  37. */
  38. protected $messageManager;
  39. /**
  40. * @param \Magento\User\Model\Backend\Config\ObserverConfig $observerConfig
  41. * @param \Magento\User\Model\ResourceModel\User $userResource
  42. * @param \Magento\Backend\Model\Auth\Session $authSession
  43. * @param \Magento\Framework\Message\ManagerInterface $messageManager
  44. */
  45. public function __construct(
  46. \Magento\User\Model\Backend\Config\ObserverConfig $observerConfig,
  47. \Magento\User\Model\ResourceModel\User $userResource,
  48. \Magento\Backend\Model\Auth\Session $authSession,
  49. \Magento\Framework\Message\ManagerInterface $messageManager
  50. ) {
  51. $this->observerConfig = $observerConfig;
  52. $this->userResource = $userResource;
  53. $this->authSession = $authSession;
  54. $this->messageManager = $messageManager;
  55. }
  56. /**
  57. * Save current admin password to prevent its usage when changed in the future.
  58. *
  59. * @param EventObserver $observer
  60. * @return void
  61. */
  62. public function execute(EventObserver $observer)
  63. {
  64. /* @var $user \Magento\User\Model\User */
  65. $user = $observer->getEvent()->getObject();
  66. if ($user->getId()) {
  67. $passwordHash = $user->getPassword();
  68. if ($passwordHash && !$user->getForceNewPassword()) {
  69. $this->userResource->trackPassword($user, $passwordHash);
  70. $this->messageManager->getMessages()->deleteMessageByIdentifier(User::MESSAGE_ID_PASSWORD_EXPIRED);
  71. $this->authSession->unsPciAdminUserIsPasswordExpired();
  72. }
  73. }
  74. }
  75. }