summaryrefslogtreecommitdiff
path: root/vendor/OAuth/Common/Storage/Session.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/OAuth/Common/Storage/Session.php')
-rwxr-xr-xvendor/OAuth/Common/Storage/Session.php188
1 files changed, 188 insertions, 0 deletions
diff --git a/vendor/OAuth/Common/Storage/Session.php b/vendor/OAuth/Common/Storage/Session.php
new file mode 100755
index 00000000..e908a67e
--- /dev/null
+++ b/vendor/OAuth/Common/Storage/Session.php
@@ -0,0 +1,188 @@
+<?php
+
+namespace OAuth\Common\Storage;
+
+use OAuth\Common\Token\TokenInterface;
+use OAuth\Common\Storage\Exception\TokenNotFoundException;
+use OAuth\Common\Storage\Exception\AuthorizationStateNotFoundException;
+
+/**
+ * Stores a token in a PHP session.
+ */
+class Session implements TokenStorageInterface
+{
+ /**
+ * @var bool
+ */
+ protected $startSession;
+
+ /**
+ * @var string
+ */
+ protected $sessionVariableName;
+
+ /**
+ * @var string
+ */
+ protected $stateVariableName;
+
+ /**
+ * @param bool $startSession Whether or not to start the session upon construction.
+ * @param string $sessionVariableName the variable name to use within the _SESSION superglobal
+ * @param string $stateVariableName
+ */
+ public function __construct(
+ $startSession = true,
+ $sessionVariableName = 'lusitanian_oauth_token',
+ $stateVariableName = 'lusitanian_oauth_state'
+ ) {
+ if ($startSession && !isset($_SESSION)) {
+ session_start();
+ }
+
+ $this->startSession = $startSession;
+ $this->sessionVariableName = $sessionVariableName;
+ $this->stateVariableName = $stateVariableName;
+ if (!isset($_SESSION[$sessionVariableName])) {
+ $_SESSION[$sessionVariableName] = array();
+ }
+ if (!isset($_SESSION[$stateVariableName])) {
+ $_SESSION[$stateVariableName] = array();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function retrieveAccessToken($service)
+ {
+ if ($this->hasAccessToken($service)) {
+ return unserialize($_SESSION[$this->sessionVariableName][$service]);
+ }
+
+ throw new TokenNotFoundException('Token not found in session, are you sure you stored it?');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function storeAccessToken($service, TokenInterface $token)
+ {
+ $serializedToken = serialize($token);
+
+ if (isset($_SESSION[$this->sessionVariableName])
+ && is_array($_SESSION[$this->sessionVariableName])
+ ) {
+ $_SESSION[$this->sessionVariableName][$service] = $serializedToken;
+ } else {
+ $_SESSION[$this->sessionVariableName] = array(
+ $service => $serializedToken,
+ );
+ }
+
+ // allow chaining
+ return $this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function hasAccessToken($service)
+ {
+ return isset($_SESSION[$this->sessionVariableName], $_SESSION[$this->sessionVariableName][$service]);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function clearToken($service)
+ {
+ if (array_key_exists($service, $_SESSION[$this->sessionVariableName])) {
+ unset($_SESSION[$this->sessionVariableName][$service]);
+ }
+
+ // allow chaining
+ return $this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function clearAllTokens()
+ {
+ unset($_SESSION[$this->sessionVariableName]);
+
+ // allow chaining
+ return $this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function storeAuthorizationState($service, $state)
+ {
+ if (isset($_SESSION[$this->stateVariableName])
+ && is_array($_SESSION[$this->stateVariableName])
+ ) {
+ $_SESSION[$this->stateVariableName][$service] = $state;
+ } else {
+ $_SESSION[$this->stateVariableName] = array(
+ $service => $state,
+ );
+ }
+
+ // allow chaining
+ return $this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function hasAuthorizationState($service)
+ {
+ return isset($_SESSION[$this->stateVariableName], $_SESSION[$this->stateVariableName][$service]);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function retrieveAuthorizationState($service)
+ {
+ if ($this->hasAuthorizationState($service)) {
+ return $_SESSION[$this->stateVariableName][$service];
+ }
+
+ throw new AuthorizationStateNotFoundException('State not found in session, are you sure you stored it?');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function clearAuthorizationState($service)
+ {
+ if (array_key_exists($service, $_SESSION[$this->stateVariableName])) {
+ unset($_SESSION[$this->stateVariableName][$service]);
+ }
+
+ // allow chaining
+ return $this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function clearAllAuthorizationStates()
+ {
+ unset($_SESSION[$this->stateVariableName]);
+
+ // allow chaining
+ return $this;
+ }
+
+ public function __destruct()
+ {
+ if ($this->startSession) {
+ session_write_close();
+ }
+ }
+}