Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/ConnectedAccount/Storage/Local.php
<?php

namespace XF\ConnectedAccount\Storage;

use
OAuth\Common\Token\TokenInterface;
use
OAuth\Common\Storage\TokenStorageInterface;
use
OAuth\Common\Storage\Exception\TokenNotFoundException;
use
OAuth\Common\Storage\Exception\AuthorizationStateNotFoundException;

class
Local implements TokenStorageInterface
{
    protected
$storage = [];

    protected
$storageVariableName;
    protected
$stateVariableName;
    protected
$dataVariableName;

    public function
__construct($storageVariableName = 'oauthToken', $stateVariableName = 'oauthState', $dataVariableName = 'oauthData')
    {
       
$this->storageVariableName = $storageVariableName;
       
$this->stateVariableName = $stateVariableName;
       
$this->dataVariableName = $dataVariableName;
    }

    public function
retrieveAccessToken($service)
    {
        if (
$this->hasAccessToken($service))
        {
           
$tokens = $this->getTokens();
            return
$tokens[$service];
        }
        throw new
TokenNotFoundException('Cannot find token for ' . htmlspecialchars($service) .  ' inside storage.');
    }

    public function
storeAccessToken($service, TokenInterface $token)
    {
       
$tokens = $this->getTokens();
       
$tokens[$service] = $token;
       
$this->storage[$this->storageVariableName] = $tokens;

        return
$this;
    }

    public function
hasAccessToken($service)
    {
       
$tokens = $this->getTokens();
        return (
$tokens && isset($tokens[$service]) && ($tokens[$service] instanceof TokenInterface));
    }

    public function
clearToken($service)
    {
       
$tokens = $this->getTokens();

        if (
$this->hasAccessToken($service))
        {
            unset(
$tokens[$service]);
           
$this->storage[$this->storageVariableName] = $tokens;
        }

       
$this->clearData($service);

        return
$this;
    }

    public function
clearAllTokens()
    {
        unset(
$this->storage[$this->storageVariableName]);
        unset(
$this->storage[$this->dataVariableName]);
        return
$this;
    }

    public function
retrieveAuthorizationState($service)
    {
        if (
$this->hasAuthorizationState($service))
        {
           
$states = $this->getStates();
            return
$states[$service];
        }
        throw new
AuthorizationStateNotFoundException('Cannot find state for ' . htmlspecialchars($service) .  ' inside storage.');
    }

    public function
storeAuthorizationState($service, $state)
    {
       
$states = $this->getStates();
       
$states[$service] = $state;

       
$this->storage[$this->stateVariableName] = $states;

        return
$this;
    }

    public function
hasAuthorizationState($service)
    {
       
$states = $this->getStates();
        return (
$states && isset($states[$service]));
    }

    public function
clearAuthorizationState($service)
    {
       
$states = $this->getStates();

        if (
$this->hasAuthorizationState($service))
        {
            unset(
$states[$service]);
           
$this->storage[$this->stateVariableName] = $states;
        }

        return
$this;
    }

    public function
clearAllAuthorizationStates()
    {
        unset(
$this->storage[$this->storageVariableName]);
        return
$this;
    }

    public function
retrieveData($service)
    {
        if (
$this->hasData($service))
        {
           
$data = $this->getData();
            return
$data[$service];
        }
        throw new
TokenNotFoundException('Cannot find data for ' . htmlspecialchars($service) .  ' inside storage.');
    }

    public function
storeData($service, $value)
    {
       
$data = $this->getData();
       
$data[$service] = $value;
       
$this->storage[$this->dataVariableName] = $data;

        return
$this;
    }

    public function
hasData($service)
    {
       
$data = $this->getData();
        return (
$data && isset($data[$service]));
    }

    public function
clearData($service)
    {
       
$data = $this->getData();

        if (
$this->hasData($service))
        {
            unset(
$data[$service]);
           
$this->storage[$this->dataVariableName] = $data;
        }
    }

    public function
clearAllData()
    {
        unset(
$this->storage[$this->dataVariableName]);
        return
$this;
    }

   
/**
     * Get tokens from \XF\Session\Session
     *
     * @return mixed|null
     */
   
public function getTokens()
    {
        return
$this->storage[$this->storageVariableName] ?? [];
    }

   
/**
     * Get data from \XF\Session\Session
     *
     * @return mixed|null
     */
   
public function getData()
    {
        return
$this->storage[$this->dataVariableName] ?? [];
    }

   
/**
     * Get states from \XF\Session\Session
     *
     * @return mixed|null
     */
   
public function getStates()
    {
        return
$this->storage[$this->stateVariableName] ?? [];
    }
}