session = $session; $this->sessionVariableName = $sessionVariableName; $this->stateVariableName = $stateVariableName; } /** * {@inheritDoc} */ public function retrieveAccessToken($service) { if ($this->hasAccessToken($service)) { // get from session $tokens = $this->session->get($this->sessionVariableName); // one item return $tokens[$service]; } throw new TokenNotFoundException('Token not found in session, are you sure you stored it?'); } /** * {@inheritDoc} */ public function storeAccessToken($service, TokenInterface $token) { // get previously saved tokens $tokens = $this->session->get($this->sessionVariableName); if (!is_array($tokens)) { $tokens = array(); } $tokens[$service] = $token; // save $this->session->set($this->sessionVariableName, $tokens); // allow chaining return $this; } /** * {@inheritDoc} */ public function hasAccessToken($service) { // get from session $tokens = $this->session->get($this->sessionVariableName); return is_array($tokens) && isset($tokens[$service]) && $tokens[$service] instanceof TokenInterface; } /** * {@inheritDoc} */ public function clearToken($service) { // get previously saved tokens $tokens = $this->session->get($this->sessionVariableName); if (is_array($tokens) && array_key_exists($service, $tokens)) { unset($tokens[$service]); // Replace the stored tokens array $this->session->set($this->sessionVariableName, $tokens); } // allow chaining return $this; } /** * {@inheritDoc} */ public function clearAllTokens() { $this->session->remove($this->sessionVariableName); // allow chaining return $this; } /** * {@inheritDoc} */ public function retrieveAuthorizationState($service) { if ($this->hasAuthorizationState($service)) { // get from session $states = $this->session->get($this->stateVariableName); // one item return $states[$service]; } throw new AuthorizationStateNotFoundException('State not found in session, are you sure you stored it?'); } /** * {@inheritDoc} */ public function storeAuthorizationState($service, $state) { // get previously saved tokens $states = $this->session->get($this->stateVariableName); if (!is_array($states)) { $states = array(); } $states[$service] = $state; // save $this->session->set($this->stateVariableName, $states); // allow chaining return $this; } /** * {@inheritDoc} */ public function hasAuthorizationState($service) { // get from session $states = $this->session->get($this->stateVariableName); return is_array($states) && isset($states[$service]) && null !== $states[$service]; } /** * {@inheritDoc} */ public function clearAuthorizationState($service) { // get previously saved tokens $states = $this->session->get($this->stateVariableName); if (is_array($states) && array_key_exists($service, $states)) { unset($states[$service]); // Replace the stored tokens array $this->session->set($this->stateVariableName, $states); } // allow chaining return $this; } /** * {@inheritDoc} */ public function clearAllAuthorizationStates() { $this->session->remove($this->stateVariableName); // allow chaining return $this; } /** * @return Session */ public function getSession() { return $this->session; } }