/** * Persists a new access token to permanent storage. * * @param \League\OAuth2\Server\Entities\AccessTokenEntityInterface|AccessTokenEntity $accessTokenEntity */ public function persistNewAccessToken(AccessTokenEntityInterface $accessTokenEntity) { $accessTokenModel = $this->modelResolver->getModel('AccessTokenModel'); $newAccessToken = ['token' => $accessTokenEntity->getIdentifier(), 'client_id' => $accessTokenEntity->getClient()->getIdentifier(), 'expire_time' => $accessTokenEntity->getExpiryDateTime()]; if (!is_null($accessTokenEntity->getUserIdentifier())) { $newAccessToken['user_id'] = $accessTokenEntity->getUserIdentifier(); } if (!is_null($accessTokenEntity->getName())) { $newAccessToken['name'] = $accessTokenEntity->getName(); } if ($accessTokenEntity->getScopes() !== []) { $scopes = array_map(function ($Scope) { /* @var ScopeEntity $Scope */ return $Scope->getIdentifier(); }, $accessTokenEntity->getScopes()); if ($accessTokenModel::$canHandleArray) { $newAccessToken['scopes'] = $scopes; } else { $newAccessToken['scopes'] = json_encode($scopes); } } $accessTokenModel::create($newAccessToken); }