Skip to content

Commit 9096cba

Browse files
author
Joan He
committed
Merge commit 'refs/pull/49/head' of https://github.com/magento/magento2ce into MAGETWO-38635-prs
2 parents 37de1e6 + bfd5634 commit 9096cba

File tree

10 files changed

+385
-299
lines changed

10 files changed

+385
-299
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Security\Helper;
7+
8+
use Magento\Framework\Stdlib\Cookie\CookieReaderInterface;
9+
10+
/**
11+
* Security cookie helper
12+
*/
13+
class SecurityCookie extends \Magento\Framework\App\Helper\AbstractHelper
14+
{
15+
/**
16+
* Cookie name
17+
*/
18+
const LOGOUT_REASON_CODE_COOKIE_NAME = 'loggedOutReasonCode';
19+
20+
/**
21+
* @var \Magento\Framework\Stdlib\Cookie\PhpCookieManager
22+
*/
23+
protected $phpCookieManager;
24+
25+
/**
26+
* @var \Magento\Backend\Helper\Data
27+
*/
28+
protected $backendData;
29+
30+
/**
31+
* @var \Magento\Framework\Stdlib\Cookie\PublicCookieMetadataFactory
32+
*/
33+
protected $cookieMetadataFactory;
34+
35+
/**
36+
* @var CookieReaderInterface
37+
*/
38+
protected $cookieReader;
39+
40+
/**
41+
* @param \Magento\Framework\Stdlib\Cookie\PhpCookieManager $phpCookieManager
42+
* @param \Magento\Framework\Stdlib\Cookie\PublicCookieMetadataFactory $cookieMetadataFactory
43+
* @param CookieReaderInterface $cookieReader
44+
* @param \Magento\Backend\Helper\Data $backendData
45+
*/
46+
public function __construct(
47+
\Magento\Framework\Stdlib\Cookie\PhpCookieManager $phpCookieManager,
48+
\Magento\Framework\Stdlib\Cookie\PublicCookieMetadataFactory $cookieMetadataFactory,
49+
CookieReaderInterface $cookieReader,
50+
\Magento\Backend\Helper\Data $backendData
51+
) {
52+
$this->phpCookieManager = $phpCookieManager;
53+
$this->cookieMetadataFactory = $cookieMetadataFactory;
54+
$this->cookieReader = $cookieReader;
55+
$this->backendData = $backendData;
56+
}
57+
58+
/**
59+
* Get cookie with logout reason code
60+
*
61+
* @return string|int
62+
*/
63+
public function getLogoutReasonCookie()
64+
{
65+
return (int) $this->cookieReader->getCookie(self::LOGOUT_REASON_CODE_COOKIE_NAME, -1);
66+
}
67+
68+
/**
69+
* Set logout reason cookie
70+
*
71+
* @param int $status
72+
* @return $this
73+
*/
74+
public function setLogoutReasonCookie($status)
75+
{
76+
$metaData = $this->createCookieMetaData();
77+
$metaData->setPath('/' . $this->backendData->getAreaFrontName());
78+
79+
$this->phpCookieManager->setPublicCookie(
80+
self::LOGOUT_REASON_CODE_COOKIE_NAME,
81+
(int) $status,
82+
$metaData
83+
);
84+
85+
return $this;
86+
}
87+
88+
/**
89+
* Delete cookie with reason of logout
90+
*
91+
* @return $this
92+
*/
93+
public function deleteLogoutReasonCookie()
94+
{
95+
$metaData = $this->createCookieMetaData();
96+
$metaData->setPath('/' . $this->backendData->getAreaFrontName())->setDuration(-1);
97+
98+
$this->phpCookieManager->setPublicCookie(
99+
self::LOGOUT_REASON_CODE_COOKIE_NAME,
100+
'',
101+
$metaData
102+
);
103+
104+
return $this;
105+
}
106+
107+
/**
108+
* Create Cookie Metadata instance
109+
*
110+
* @return \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata
111+
*/
112+
protected function createCookieMetaData()
113+
{
114+
return $this->cookieMetadataFactory->create();
115+
}
116+
}

app/code/Magento/Security/Model/AdminSessionsManager.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ class AdminSessionsManager
1717
*/
1818
const ADMIN_SESSION_LIFETIME = 86400;
1919

20+
/**
21+
* Logout reason when current user has been locked out
22+
*/
23+
const LOGOUT_REASON_USER_LOCKED = 10;
24+
2025
/**
2126
* @var \Magento\Security\Helper\SecurityConfig
2227
*/
@@ -155,6 +160,11 @@ public function getLogoutReasonMessageByStatus($statusCode)
155160
'Your current session is terminated by another user of this account.'
156161
);
157162
break;
163+
case self::LOGOUT_REASON_USER_LOCKED:
164+
$reasonMessage = __(
165+
'Your account is temporarily disabled.'
166+
);
167+
break;
158168
default:
159169
$reasonMessage = __('Your current session has been expired.');
160170
break;

app/code/Magento/Security/Model/Plugin/AuthSession.php

Lines changed: 6 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,6 @@
1414
*/
1515
class AuthSession
1616
{
17-
/**
18-
* Cookie name
19-
*/
20-
const LOGOUT_REASON_CODE_COOKIE_NAME = 'loggedOutReasonCode';
21-
2217
/**
2318
* @var \Magento\Framework\App\RequestInterface
2419
*/
@@ -35,50 +30,26 @@ class AuthSession
3530
protected $sessionsManager;
3631

3732
/**
38-
* @var \Magento\Framework\Stdlib\Cookie\PhpCookieManager
39-
*/
40-
protected $phpCookieManager;
41-
42-
/**
43-
* @var CookieReaderInterface
44-
*/
45-
protected $cookieReader;
46-
47-
/**
48-
* @var \Magento\Backend\Helper\Data
49-
*/
50-
protected $backendData;
51-
52-
/**
53-
* @var \Magento\Framework\Stdlib\Cookie\PublicCookieMetadataFactory
33+
* @var \Magento\Security\Helper\SecurityCookie
5434
*/
55-
protected $cookieMetadataFactory;
35+
protected $securityCookieHelper;
5636

5737
/**
5838
* @param \Magento\Framework\App\RequestInterface $request
5939
* @param \Magento\Framework\Message\ManagerInterface $messageManager
6040
* @param AdminSessionsManager $sessionsManager
61-
* @param \Magento\Framework\Stdlib\Cookie\PhpCookieManager $phpCookieManager
62-
* @param CookieReaderInterface $cookieReader
63-
* @param \Magento\Backend\Helper\Data $backendData
64-
* @param \Magento\Framework\Stdlib\Cookie\PublicCookieMetadataFactory $cookieMetadataFactory
41+
* @param \Magento\Security\Helper\SecurityCookie $securityCookieHelper
6542
*/
6643
public function __construct(
6744
\Magento\Framework\App\RequestInterface $request,
6845
\Magento\Framework\Message\ManagerInterface $messageManager,
6946
AdminSessionsManager $sessionsManager,
70-
\Magento\Framework\Stdlib\Cookie\PhpCookieManager $phpCookieManager,
71-
CookieReaderInterface $cookieReader,
72-
\Magento\Backend\Helper\Data $backendData,
73-
\Magento\Framework\Stdlib\Cookie\PublicCookieMetadataFactory $cookieMetadataFactory
47+
\Magento\Security\Helper\SecurityCookie $securityCookieHelper
7448
) {
7549
$this->request = $request;
7650
$this->messageManager = $messageManager;
7751
$this->sessionsManager = $sessionsManager;
78-
$this->phpCookieManager = $phpCookieManager;
79-
$this->cookieReader = $cookieReader;
80-
$this->backendData = $backendData;
81-
$this->cookieMetadataFactory = $cookieMetadataFactory;
52+
$this->securityCookieHelper = $securityCookieHelper;
8253
}
8354

8455
/**
@@ -110,7 +81,7 @@ public function aroundProlong(Session $session, \Closure $proceed)
11081
protected function addUserLogoutNotification()
11182
{
11283
if ($this->isAjaxRequest()) {
113-
$this->setLogoutReasonCookie(
84+
$this->securityCookieHelper->setLogoutReasonCookie(
11485
$this->sessionsManager->getCurrentSession()->getStatus()
11586
);
11687
} else {
@@ -122,27 +93,6 @@ protected function addUserLogoutNotification()
12293
return $this;
12394
}
12495

125-
/**
126-
* Set logout reason cookie
127-
*
128-
* @param int $status
129-
* @return $this
130-
*/
131-
protected function setLogoutReasonCookie($status)
132-
{
133-
/** @var \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata $metaData */
134-
$metaData = $this->cookieMetadataFactory->create();
135-
$metaData->setPath('/' . $this->backendData->getAreaFrontName());
136-
137-
$this->phpCookieManager->setPublicCookie(
138-
self::LOGOUT_REASON_CODE_COOKIE_NAME,
139-
(int) $status,
140-
$metaData
141-
);
142-
143-
return $this;
144-
}
145-
14696
/**
14797
* Check if a request is session check
14898
*

app/code/Magento/Security/Model/Plugin/LoginController.php

Lines changed: 7 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
namespace Magento\Security\Model\Plugin;
77

88
use Magento\Security\Model\AdminSessionsManager;
9-
use Magento\Framework\Stdlib\Cookie\CookieReaderInterface;
109
use Magento\Backend\Controller\Adminhtml\Auth\Login;
1110

1211
/**
@@ -25,47 +24,23 @@ class LoginController
2524
protected $sessionsManager;
2625

2726
/**
28-
* @var \Magento\Framework\Stdlib\Cookie\PhpCookieManager
27+
* @var \Magento\Security\Helper\SecurityCookie
2928
*/
30-
protected $phpCookieManager;
31-
32-
/**
33-
* @var CookieReaderInterface
34-
*/
35-
protected $cookieReader;
36-
37-
/**
38-
* @var \Magento\Backend\Helper\Data
39-
*/
40-
protected $backendData;
41-
42-
/**
43-
* @var \Magento\Framework\Stdlib\Cookie\PublicCookieMetadataFactory
44-
*/
45-
protected $cookieMetadataFactory;
29+
protected $securityCookieHelper;
4630

4731
/**
4832
* @param \Magento\Framework\Message\ManagerInterface $messageManager
4933
* @param AdminSessionsManager $sessionsManager
50-
* @param \Magento\Framework\Stdlib\Cookie\PhpCookieManager $phpCookieManager
51-
* @param CookieReaderInterface $cookieReader
52-
* @param \Magento\Backend\Helper\Data $backendData
53-
* @param \Magento\Framework\Stdlib\Cookie\PublicCookieMetadataFactory $cookieMetadataFactory
34+
* @param \Magento\Security\Helper\SecurityCookie $securityCookieHelper
5435
*/
5536
public function __construct(
5637
\Magento\Framework\Message\ManagerInterface $messageManager,
5738
AdminSessionsManager $sessionsManager,
58-
\Magento\Framework\Stdlib\Cookie\PhpCookieManager $phpCookieManager,
59-
CookieReaderInterface $cookieReader,
60-
\Magento\Backend\Helper\Data $backendData,
61-
\Magento\Framework\Stdlib\Cookie\PublicCookieMetadataFactory $cookieMetadataFactory
39+
\Magento\Security\Helper\SecurityCookie $securityCookieHelper
6240
) {
6341
$this->messageManager = $messageManager;
6442
$this->sessionsManager = $sessionsManager;
65-
$this->phpCookieManager = $phpCookieManager;
66-
$this->cookieReader = $cookieReader;
67-
$this->backendData = $backendData;
68-
$this->cookieMetadataFactory = $cookieMetadataFactory;
43+
$this->securityCookieHelper = $securityCookieHelper;
6944
}
7045

7146
/**
@@ -76,12 +51,12 @@ public function __construct(
7651
*/
7752
public function beforeExecute(Login $login)
7853
{
79-
$logoutReasonCode = $this->cookieReader->getCookie(AuthSession::LOGOUT_REASON_CODE_COOKIE_NAME, -1);
54+
$logoutReasonCode = $this->securityCookieHelper->getLogoutReasonCookie();
8055
if ($this->isLoginForm($login) && $logoutReasonCode >= 0) {
8156
$this->messageManager->addError(
8257
$this->sessionsManager->getLogoutReasonMessageByStatus($logoutReasonCode)
8358
);
84-
$this->deleteLogoutReasonCookie();
59+
$this->securityCookieHelper->deleteLogoutReasonCookie();
8560
}
8661
}
8762

@@ -95,24 +70,4 @@ protected function isLoginForm(Login $login)
9570
{
9671
return $login->getRequest()->getUri() == $login->getUrl('*');
9772
}
98-
99-
/**
100-
* Delete cookie with reason of logout
101-
*
102-
* @return $this
103-
*/
104-
protected function deleteLogoutReasonCookie()
105-
{
106-
/** @var \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata $metaData */
107-
$metaData = $this->cookieMetadataFactory->create();
108-
$metaData->setPath('/' . $this->backendData->getAreaFrontName())->setDuration(-1);
109-
110-
$this->phpCookieManager->setPublicCookie(
111-
AuthSession::LOGOUT_REASON_CODE_COOKIE_NAME,
112-
'',
113-
$metaData
114-
);
115-
116-
return $this;
117-
}
11873
}

0 commit comments

Comments
 (0)