Seditio Source
Root |
./othercms/xenForo 2.2.8/src/vendor/lusitanian/oauth/src/OAuth/Common/Storage/SymfonySession.php
<?php

namespace OAuth\Common\Storage;

use
OAuth\Common\Token\TokenInterface;
use
OAuth\Common\Storage\Exception\TokenNotFoundException;
use
OAuth\Common\Storage\Exception\AuthorizationStateNotFoundException;
use
Symfony\Component\HttpFoundation\Session\SessionInterface;

class
SymfonySession implements TokenStorageInterface
{
    private
$session;
    private
$sessionVariableName;
    private
$stateVariableName;

   
/**
     * @param SessionInterface $session
     * @param bool $startSession
     * @param string $sessionVariableName
     * @param string $stateVariableName
     */
   
public function __construct(
       
SessionInterface $session,
       
$startSession = true,
       
$sessionVariableName = 'lusitanian_oauth_token',
       
$stateVariableName = 'lusitanian_oauth_state'
   
) {
       
$this->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;
    }
}