summaryrefslogtreecommitdiff
path: root/vendor/OAuth/Common/Storage/SymfonySession.php
diff options
context:
space:
mode:
authorFrédéric Guillot <fguillot@users.noreply.github.com>2014-05-03 22:24:03 -0400
committerFrédéric Guillot <fguillot@users.noreply.github.com>2014-05-03 22:24:03 -0400
commit560a12f0bd6347a335f8ed5201d6d9562d03d4bc (patch)
tree00510d25c1cf5e747573543fa88d44ef003b1c9a /vendor/OAuth/Common/Storage/SymfonySession.php
parent9531e439cd99fb7dbcfb039f422f1d1ba414ec30 (diff)
Add Google authentication
Diffstat (limited to 'vendor/OAuth/Common/Storage/SymfonySession.php')
-rwxr-xr-xvendor/OAuth/Common/Storage/SymfonySession.php200
1 files changed, 200 insertions, 0 deletions
diff --git a/vendor/OAuth/Common/Storage/SymfonySession.php b/vendor/OAuth/Common/Storage/SymfonySession.php
new file mode 100755
index 00000000..6c5fbf60
--- /dev/null
+++ b/vendor/OAuth/Common/Storage/SymfonySession.php
@@ -0,0 +1,200 @@
+<?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;
+ }
+}