/**
  * Persists a new access token to permanent storage.
  *
  * @param \League\OAuth2\Server\Entities\AccessTokenEntityInterface $accessTokenEntity
  * @return mixed
  */
 public function persistNewAccessToken(AccessTokenEntityInterface $accessTokenEntity)
 {
     $db = CommonModel::getDb();
     $transaction = $db->beginTransaction();
     try {
         $accessTokenModel = new AccessTokensModel();
         $accessTokenModel->id = $accessTokenEntity->getIdentifier();
         $accessTokenModel->expire_time = $accessTokenEntity->getExpiryDateTime()->getTimestamp();
         $accessTokenModel->user_id = $accessTokenEntity->getUserIdentifier();
         $accessTokenModel->client_id = $accessTokenEntity->getClient()->getIdentifier();
         if (!$accessTokenModel->save()) {
             return false;
         }
         foreach ($accessTokenEntity->getScopes() as $item) {
             $accessTokenScopesModel = new AccessTokenScopesModel();
             $accessTokenScopesModel->access_token_id = $accessTokenModel->id;
             $accessTokenScopesModel->scope_id = $item->getIdentifier();
             $accessTokenScopesModel->save();
         }
         $transaction->commit();
         return true;
     } catch (\Exception $e) {
         $transaction->rollBack();
         return false;
     }
 }
 /**
  * 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);
 }
 /**
  * @inheritDoc
  */
 public function persistNewAccessToken(AccessTokenEntityInterface $accessTokenEntity)
 {
     $as = $this->config->getString('auth');
     $auth = new \SimpleSAML_Auth_Simple($as);
     // We should be authenticated so this returns the session user attributes (or [] if not)
     $attributes = $auth->getAttributes();
     $scopes = [];
     foreach ($accessTokenEntity->getScopes() as $scope) {
         $scopes[] = $scope->getIdentifier();
     }
     $this->conn->insert($this->getTableName(), ['id' => $accessTokenEntity->getIdentifier(), 'scopes' => $scopes, 'attributes' => $attributes, 'expires_at' => $accessTokenEntity->getExpiryDateTime(), 'user_id' => $accessTokenEntity->getUserIdentifier(), 'client_id' => $accessTokenEntity->getClient()->getIdentifier()], ['string', 'json_array', 'json_array', 'datetime', 'string', 'string']);
 }
 /**
  * Persists a new access token to permanent storage.
  *
  * @param \League\OAuth2\Server\Entities\Interfaces\AccessTokenEntityInterface $accessTokenEntity
  **/
 public function persistNewAccessToken(AccessTokenEntityInterface $accessTokenEntity)
 {
     $scopes = [];
     foreach ($accessTokenEntity->getScopes() as $scope) {
         $scopes[] = \Ivyhjk\OAuth2\Server\Adapter\Phalcon\Model\Scope::findFirst(['conditions' => 'id = :id:', 'bind' => ['id' => $scope->getIdentifier()]]);
     }
     // prx($accessTokenEntity->getExpiryDateTime()->format('Y-m-d H:i:s'));
     $accessToken = new \Ivyhjk\OAuth2\Server\Adapter\Phalcon\Model\AccessToken();
     $accessToken->id = $accessTokenEntity->getIdentifier();
     $accessToken->user_id = $accessTokenEntity->getUserIdentifier();
     $accessToken->client_id = $accessTokenEntity->getClient()->getIdentifier();
     $accessToken->expire_time = $accessTokenEntity->getExpiryDateTime()->format('Y-m-d H:i:s');
     $accessToken->scopes = $scopes;
     $accessToken->save();
 }