6
6
namespace Magento \Integration \Model \Oauth ;
7
7
8
8
use Magento \Authorization \Model \UserContextInterface ;
9
+ use Magento \Framework \App \ObjectManager ;
9
10
use Magento \Framework \Oauth \Exception as OauthException ;
10
11
use Magento \Framework \Oauth \Helper \Oauth as OauthHelper ;
12
+ use Magento \Integration \Api \Exception \UserTokenException ;
13
+ use Magento \Integration \Api \UserTokenReaderInterface ;
11
14
use Magento \Integration \Model \ResourceModel \Oauth \Token \Collection as TokenCollection ;
12
15
13
16
/**
@@ -76,6 +79,11 @@ class Token extends \Magento\Framework\Model\AbstractModel
76
79
*/
77
80
protected $ _keyLengthFactory ;
78
81
82
+ /**
83
+ * @var UserTokenReaderInterface
84
+ */
85
+ private $ reader ;
86
+
79
87
/**
80
88
* Initialize dependencies.
81
89
*
@@ -89,6 +97,7 @@ class Token extends \Magento\Framework\Model\AbstractModel
89
97
* @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
90
98
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
91
99
* @param array $data
100
+ * @param UserTokenReaderInterface|null $reader
92
101
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
93
102
*/
94
103
public function __construct (
@@ -101,14 +110,16 @@ public function __construct(
101
110
OauthHelper $ oauthHelper ,
102
111
\Magento \Framework \Model \ResourceModel \AbstractResource $ resource = null ,
103
112
\Magento \Framework \Data \Collection \AbstractDb $ resourceCollection = null ,
104
- array $ data = []
113
+ array $ data = [],
114
+ ?UserTokenReaderInterface $ reader = null
105
115
) {
106
116
parent ::__construct ($ context , $ registry , $ resource , $ resourceCollection , $ data );
107
117
$ this ->_keyLengthFactory = $ keyLengthFactory ;
108
118
$ this ->_urlValidator = $ urlValidator ;
109
119
$ this ->_consumerFactory = $ consumerFactory ;
110
120
$ this ->_oauthData = $ oauthData ;
111
121
$ this ->_oauthHelper = $ oauthHelper ;
122
+ $ this ->reader = ObjectManager::getInstance ()->get (UserTokenReaderInterface::class);
112
123
}
113
124
114
125
/**
@@ -352,9 +363,30 @@ public function loadByCustomerId($customerId)
352
363
*
353
364
* @param string $token
354
365
* @return $this
366
+ * @deprecated Proper SPI for managing tokens was introduced.
367
+ * @see UserTokenReaderInterface
355
368
*/
356
369
public function loadByToken ($ token )
357
370
{
358
- return $ this ->load ($ token , 'token ' );
371
+ $ data = $ this ->load ($ token , 'token ' );
372
+ if ($ data ->getId ()) {
373
+ return $ data ;
374
+ }
375
+ try {
376
+ $ data = $ this ->reader ->read ($ token );
377
+ } catch (UserTokenException $ exception ) {
378
+ //Token is not valid, keeping this model's data empty
379
+ return $ this ;
380
+ }
381
+
382
+ $ this ->setUserType ($ data ->getUserContext ()->getUserType ());
383
+ if ($ data ->getUserContext ()->getUserType () === UserContextInterface::USER_TYPE_CUSTOMER ) {
384
+ $ this ->setCustomerId ($ data ->getUserContext ()->getUserId ());
385
+ } else {
386
+ $ this ->setAdminId ($ data ->getUserContext ()->getUserId ());
387
+ }
388
+ $ this ->setId (PHP_INT_MAX );
389
+
390
+ return $ this ;
359
391
}
360
392
}
0 commit comments