Skip to content

Commit bef0bd5

Browse files
committed
move interface into Api/Data, make it extensible (#22833: Short-term admin accounts)
1 parent 107cb5f commit bef0bd5

File tree

8 files changed

+53
-13
lines changed

8 files changed

+53
-13
lines changed

app/code/Magento/Security/Model/UserExpirationInterface.php renamed to app/code/Magento/Security/Api/Data/UserExpirationInterface.php

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77
declare(strict_types=1);
88

9-
namespace Magento\Security\Model;
9+
namespace Magento\Security\Api\Data;
1010

1111
/**
1212
* Interface UserExpirationInterface to be used as a DTO for expires_at property on User model.
1313
*/
14-
interface UserExpirationInterface
14+
interface UserExpirationInterface extends \Magento\Framework\Api\ExtensibleDataInterface
1515
{
1616

1717
public const EXPIRES_AT = 'expires_at';
@@ -47,4 +47,19 @@ public function getUserId();
4747
* @return $this
4848
*/
4949
public function setUserId($userId);
50+
51+
/**
52+
* Retrieve existing extension attributes object or create a new one.
53+
*
54+
* @return \Magento\Security\Api\Data\UserExpirationExtensionInterface|null
55+
*/
56+
public function getExtensionAttributes();
57+
58+
/**
59+
* Set an extension attributes object.
60+
*
61+
* @param \Magento\Security\Api\Data\UserExpirationExtensionInterface $extensionAttributes
62+
* @return $this
63+
*/
64+
public function setExtensionAttributes(\Magento\Security\Api\Data\UserExpirationExtensionInterface $extensionAttributes);
5065
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class AdminUserForm
2424
private $userExpirationResource;
2525

2626
/**
27-
* @var \Magento\Security\Model\UserExpirationInterfaceFactory
27+
* @var \Magento\Security\Api\Data\UserExpirationInterfaceFactory
2828
*/
2929
private $userExpirationFactory;
3030

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77

88
namespace Magento\Security\Model;
99

10+
use Magento\Security\Api\Data\UserExpirationInterface;
11+
1012
/**
1113
* Admin User Expiration model.
1214
*/
13-
class UserExpiration extends \Magento\Framework\Model\AbstractModel implements UserExpirationInterface
15+
class UserExpiration extends \Magento\Framework\Model\AbstractExtensibleModel implements UserExpirationInterface
1416
{
1517

1618
/**
@@ -64,4 +66,20 @@ public function setUserId($userId)
6466
{
6567
return $this->setData(self::USER_ID, $userId);
6668
}
69+
70+
/**
71+
* @inheritDoc
72+
*/
73+
public function getExtensionAttributes()
74+
{
75+
return $this->_getExtensionAttributes();
76+
}
77+
78+
/**
79+
* @inheritDoc
80+
*/
81+
public function setExtensionAttributes(\Magento\Security\Api\Data\UserExpirationExtensionInterface $extensionAttributes)
82+
{
83+
return $this->_setExtensionAttributes($extensionAttributes);
84+
}
6785
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ private function processExpiredUsers(ExpiredUsersCollection $expiredRecords): vo
134134
public function isUserExpired(string $userId): bool
135135
{
136136
$isExpired = false;
137-
/** @var \Magento\Security\Model\UserExpirationInterface $expiredRecord */
137+
/** @var \Magento\Security\Api\Data\UserExpirationInterface $expiredRecord */
138138
$expiredRecord = $this->userExpirationCollectionFactory->create()
139139
->addExpiredRecordsForUserFilter($userId)
140140
->getFirstItem();

app/code/Magento/Security/Test/Unit/Observer/AdminUserAuthenticateBeforeTest.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class AdminUserAuthenticateBeforeTest extends \PHPUnit\Framework\TestCase
4848
private $eventMock;
4949

5050
/**
51-
* @var \PHPUnit\Framework\MockObject\MockObject|\Magento\Security\Model\UserExpirationInterface
51+
* @var \PHPUnit\Framework\MockObject\MockObject|\Magento\Security\Api\Data\UserExpirationInterface
5252
*/
5353
private $userExpirationMock;
5454

@@ -77,8 +77,15 @@ protected function setUp()
7777
$this->eventObserverMock = $this->createPartialMock(\Magento\Framework\Event\Observer::class, ['getEvent']);
7878
$this->eventMock = $this->createPartialMock(\Magento\Framework\Event::class, ['getUsername']);
7979
$this->userExpirationMock = $this->createPartialMock(
80-
\Magento\Security\Model\UserExpirationInterface::class,
81-
['getUserId', 'getExpiresAt', 'setUserId', 'setExpiresAt']
80+
\Magento\Security\Api\Data\UserExpirationInterface::class,
81+
[
82+
'getUserId',
83+
'getExpiresAt',
84+
'setUserId',
85+
'setExpiresAt',
86+
'getExtensionAttributes',
87+
'setExtensionAttributes'
88+
]
8289
);
8390
}
8491

app/code/Magento/Security/etc/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@
1818
</argument>
1919
</arguments>
2020
</type>
21-
<preference for="Magento\Security\Model\UserExpirationInterface" type="Magento\Security\Model\UserExpiration"/>
21+
<preference for="Magento\Security\Api\Data\UserExpirationInterface" type="Magento\Security\Model\UserExpiration"/>
2222
</config>

dev/tests/integration/testsuite/Magento/Security/Model/Plugin/AuthSessionTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ public function testProcessProlongWithExpiredUser()
160160
$user = $this->objectManager->create(\Magento\User\Model\User::class);
161161
$user->loadByUsername(\Magento\TestFramework\Bootstrap::ADMIN_NAME);
162162
$userExpirationFactory =
163-
$this->objectManager->create(\Magento\Security\Model\UserExpirationInterfaceFactory::class);
164-
/** @var \Magento\Security\Model\UserExpirationInterface $userExpiration */
163+
$this->objectManager->create(\Magento\Security\Api\Data\UserExpirationInterfaceFactory::class);
164+
/** @var \Magento\Security\Api\Data\UserExpirationInterface $userExpiration */
165165
$userExpiration = $userExpirationFactory->create();
166166
$userExpiration->setId($user->getId())
167167
->setExpiresAt($expireDate->format('Y-m-d H:i:s'))

dev/tests/integration/testsuite/Magento/Security/Model/UserExpirationManagerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ private function expireUser(\Magento\User\Model\User $user)
156156
{
157157
$expireDate = new \DateTime();
158158
$expireDate->modify('-10 days');
159-
/** @var \Magento\Security\Model\UserExpirationInterface $userExpiration */
160-
$userExpiration = $this->objectManager->create(\Magento\Security\Model\UserExpirationInterface::class);
159+
/** @var \Magento\Security\Api\Data\UserExpirationInterface $userExpiration */
160+
$userExpiration = $this->objectManager->create(\Magento\Security\Api\Data\UserExpirationInterface::class);
161161
$userExpiration->setId($user->getId())
162162
->setExpiresAt($expireDate->format('Y-m-d H:i:s'))
163163
->save();

0 commit comments

Comments
 (0)