mirror of
https://github.com/webmasterskaya/joomla-oauth-server.git
synced 2024-11-23 22:34:50 +03:00
Реализация классов AccessToken
This commit is contained in:
parent
7cd246e6c8
commit
1efe232439
@ -12,4 +12,15 @@ class AccessToken implements AccessTokenEntityInterface
|
|||||||
use AccessTokenTrait;
|
use AccessTokenTrait;
|
||||||
use EntityTrait;
|
use EntityTrait;
|
||||||
use TokenEntityTrait;
|
use TokenEntityTrait;
|
||||||
|
|
||||||
|
public function getData(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'identifier' => $this->getIdentifier(),
|
||||||
|
'expiry' => $this->getExpiryDateTime(),
|
||||||
|
'user_id' => $this->getUserIdentifier(),
|
||||||
|
'scopes' => $this->getScopes(),
|
||||||
|
'client_identifier' => $this->getClient()->getIdentifier()
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
@ -2,39 +2,77 @@
|
|||||||
|
|
||||||
namespace Webmasterskaya\Component\OauthServer\Site\Repository;
|
namespace Webmasterskaya\Component\OauthServer\Site\Repository;
|
||||||
|
|
||||||
use Joomla\CMS\MVC\Factory\MVCFactoryAwareTrait;
|
|
||||||
use League\OAuth2\Server\Entities\AccessTokenEntityInterface;
|
use League\OAuth2\Server\Entities\AccessTokenEntityInterface;
|
||||||
use League\OAuth2\Server\Entities\ClientEntityInterface;
|
use League\OAuth2\Server\Entities\ClientEntityInterface;
|
||||||
use League\OAuth2\Server\Entities\Traits\AccessTokenTrait;
|
use League\OAuth2\Server\Exception\UniqueTokenIdentifierConstraintViolationException;
|
||||||
use League\OAuth2\Server\Entities\Traits\EntityTrait;
|
|
||||||
use League\OAuth2\Server\Entities\Traits\TokenEntityTrait;
|
|
||||||
use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
|
use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
|
||||||
|
use Webmasterskaya\Component\OauthServer\Administrator\Model\AccessTokenModel;
|
||||||
|
use Webmasterskaya\Component\OauthServer\Administrator\Model\ClientModel;
|
||||||
|
use Webmasterskaya\Component\OauthServer\Site\Entity\AccessToken;
|
||||||
|
|
||||||
class AccessTokenRepository implements AccessTokenRepositoryInterface
|
class AccessTokenRepository implements AccessTokenRepositoryInterface
|
||||||
{
|
{
|
||||||
use AccessTokenTrait;
|
private AccessTokenModel $accessTokenModel;
|
||||||
use EntityTrait;
|
private ClientModel $clientModel;
|
||||||
use TokenEntityTrait;
|
|
||||||
|
|
||||||
use MVCFactoryAwareTrait;
|
/**
|
||||||
|
* @param \Webmasterskaya\Component\OauthServer\Administrator\Model\AccessTokenModel $accessTokenModel
|
||||||
public function getNewToken(ClientEntityInterface $clientEntity, array $scopes, $userIdentifier = null)
|
* @param \Webmasterskaya\Component\OauthServer\Administrator\Model\ClientModel $clientModel
|
||||||
|
*
|
||||||
|
* @since version
|
||||||
|
*/
|
||||||
|
public function __construct(AccessTokenModel $accessTokenModel, ClientModel $clientModel)
|
||||||
{
|
{
|
||||||
// TODO: Implement getNewToken() method.
|
$this->accessTokenModel = $accessTokenModel;
|
||||||
|
$this->clientModel = $clientModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function persistNewAccessToken(AccessTokenEntityInterface $accessTokenEntity)
|
public function getNewToken(ClientEntityInterface $clientEntity, array $scopes, $userIdentifier = null): AccessTokenEntityInterface
|
||||||
{
|
{
|
||||||
// TODO: Implement persistNewAccessToken() method.
|
$accessToken = new AccessToken();
|
||||||
|
$accessToken->setClient($clientEntity);
|
||||||
|
$accessToken->setUserIdentifier($userIdentifier);
|
||||||
|
|
||||||
|
foreach ($scopes as $scope) {
|
||||||
|
$accessToken->addScope($scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $accessToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function revokeAccessToken($tokenId)
|
public function persistNewAccessToken(AccessTokenEntityInterface $accessTokenEntity): void
|
||||||
{
|
{
|
||||||
// TODO: Implement revokeAccessToken() method.
|
/** @var AccessToken $accessTokenEntity */
|
||||||
|
$accessToken = $this->accessTokenModel->getItemByIdentifier($accessTokenEntity->getIdentifier());
|
||||||
|
|
||||||
|
if ($accessToken->id > 0) {
|
||||||
|
throw UniqueTokenIdentifierConstraintViolationException::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var AccessToken $accessTokenEntity */
|
||||||
|
$data = $accessTokenEntity->getData();
|
||||||
|
|
||||||
|
$client = $this->clientModel->getItemByIdentifier($accessTokenEntity->getClient()->getIdentifier());
|
||||||
|
|
||||||
|
$data['client_id'] = $client->id;
|
||||||
|
unset($data['client_identifier']);
|
||||||
|
|
||||||
|
$this->accessTokenModel->save($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isAccessTokenRevoked($tokenId)
|
public function revokeAccessToken($tokenId): void
|
||||||
{
|
{
|
||||||
// TODO: Implement isAccessTokenRevoked() method.
|
$this->accessTokenModel->revoke($tokenId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isAccessTokenRevoked($tokenId): bool
|
||||||
|
{
|
||||||
|
$accessToken = $this->accessTokenModel->getItemByIdentifier($tokenId);
|
||||||
|
|
||||||
|
if (!$accessToken->id) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return !!$accessToken->revoked;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user