Created
May 8, 2014 14:53
-
-
Save rcmachado/4c364e6c08ed5d590299 to your computer and use it in GitHub Desktop.
Revisions
-
rcmachado created this gist
May 8, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,199 @@ <?php use \OAuth\Common\Token\TokenInterface; use \OAuth\Common\Storage\Exception\TokenNotFoundException; use \OAuth\Common\Storage\Exception\AuthorizationStateNotFoundException; use \OAuth\Common\Storage\TokenStorageInterface; use \sfStorage; class Symfony1Storage implements TokenStorageInterface { private $session; private $sessionVariableName; private $stateVariableName; /** * @param SessionInterface $session * @param bool $startSession * @param string $sessionVariableName * @param string $stateVariableName */ public function __construct( sfStorage $session, $startSession = false, $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->read($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->read($this->sessionVariableName); if (!is_array($tokens)) { $tokens = array(); } $tokens[$service] = $token; // save $this->session->write($this->sessionVariableName, $tokens); // allow chaining return $this; } /** * {@inheritDoc} */ public function hasAccessToken($service) { // get from session $tokens = $this->session->read($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->read($this->sessionVariableName); if (is_array($tokens) && array_key_exists($service, $tokens)) { unset($tokens[$service]); // Replace the stored tokens array $this->session->write($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->write($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->read($this->stateVariableName); if (!is_array($states)) { $states = array(); } $states[$service] = $state; // save $this->session->write($this->stateVariableName, $states); // allow chaining return $this; } /** * {@inheritDoc} */ public function hasAuthorizationState($service) { // get from session $states = $this->session->read($this->stateVariableName); return is_array($states) && isset($states[$service]) && null !== $states[$service]; } /** * {@inheritDoc} */ public function clearAuthorizationState($service) { // get previously saved tokens $states = $this->session->read($this->stateVariableName); if (is_array($states) && array_key_exists($service, $states)) { unset($states[$service]); // Replace the stored tokens array $this->session->write($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; } }