LoginController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Security\Model\Plugin;
  7. use Magento\Security\Model\AdminSessionsManager;
  8. use Magento\Backend\Controller\Adminhtml\Auth\Login;
  9. /**
  10. * Magento\Backend\Controller\Adminhtml\Auth\Login decorator
  11. */
  12. class LoginController
  13. {
  14. /**
  15. * @var \Magento\Framework\Message\ManagerInterface
  16. */
  17. private $messageManager;
  18. /**
  19. * @var AdminSessionsManager
  20. */
  21. private $sessionsManager;
  22. /**
  23. * @var \Magento\Security\Model\SecurityCookie
  24. */
  25. private $securityCookie;
  26. /**
  27. * @param \Magento\Framework\Message\ManagerInterface $messageManager
  28. * @param AdminSessionsManager $sessionsManager
  29. * @param \Magento\Security\Model\SecurityCookie $securityCookie
  30. */
  31. public function __construct(
  32. \Magento\Framework\Message\ManagerInterface $messageManager,
  33. AdminSessionsManager $sessionsManager,
  34. \Magento\Security\Model\SecurityCookie $securityCookie
  35. ) {
  36. $this->messageManager = $messageManager;
  37. $this->sessionsManager = $sessionsManager;
  38. $this->securityCookie = $securityCookie;
  39. }
  40. /**
  41. * Before execute login
  42. *
  43. * @param Login $login
  44. * @return void
  45. */
  46. public function beforeExecute(Login $login)
  47. {
  48. $logoutReasonCode = $this->securityCookie->getLogoutReasonCookie();
  49. if ($this->isLoginForm($login) && $logoutReasonCode >= 0) {
  50. $this->messageManager->addErrorMessage(
  51. $this->sessionsManager->getLogoutReasonMessageByStatus($logoutReasonCode)
  52. );
  53. $this->securityCookie->deleteLogoutReasonCookie();
  54. }
  55. }
  56. /**
  57. * Check if the login form action is requested directly
  58. *
  59. * @param Login $login
  60. * @return bool
  61. */
  62. private function isLoginForm(Login $login)
  63. {
  64. return $login->getRequest()->getUri() == $login->getUrl('*');
  65. }
  66. }