public function testPutAndGetSessionByAccessToken() { $server = m::mock(AbstractServer::class); $server->shouldReceive('getEventEmitter->emit')->once(); $session = new SessionEntity($server); $session->setOwner('owner', 1); $session->setId('id'); $accessToken = new AccessTokenEntity($server); $accessToken->setId('my_token'); $accessToken->setExpireTime(1); $this->cache->putSessionByAccessToken($accessToken, $session); $session = $this->cache->getSessionByAccessToken('my_token'); $this->assertSame(['id' => 'id', 'owner_type' => 'owner', 'owner_id' => 1], $session); }
/** * Get a session from an access token * * @param \League\OAuth2\Server\Entity\AccessTokenEntity $accessToken The access token * * @return \League\OAuth2\Server\Entity\SessionEntity | null */ public function getByAccessToken(AccessTokenEntity $accessToken) { //Try to get result from cache $result = $this->cache->getSessionByAccessToken($accessToken); //If cache is empty if (empty($result)) { //Get from storage $result = $this->storage->getByAccessToken($accessToken); //If we have find data from storage, put to cache if ($result) { $this->cache->putSessionByAccessToken($accessToken, $result); } //Else we have find data from cache, build the entity ! } else { $result = (new SessionEntity($this->server))->setId($result['id'])->setOwner($result['owner_type'], $result['owner_id']); } return $result; }
/** * Delete an access token * * @param \League\OAuth2\Server\Entity\AccessTokenEntity $token The access token to delete * * @return void */ public function delete(AccessTokenEntity $token) { //Invalidate cache $this->cache->invalidateAccessToken($token); $this->storage->delete($token); }