From a8b6389092b474cdcaca851e7d84301eadce40ce Mon Sep 17 00:00:00 2001 From: Alex Bilbie Date: Tue, 29 Jan 2013 14:55:50 +0000 Subject: [PATCH] Updated SessionInterface --- src/OAuth2/Storage/SessionInterface.php | 263 +++++++++++++++++++++++- 1 file changed, 262 insertions(+), 1 deletion(-) diff --git a/src/OAuth2/Storage/SessionInterface.php b/src/OAuth2/Storage/SessionInterface.php index c035cffa..eb660451 100644 --- a/src/OAuth2/Storage/SessionInterface.php +++ b/src/OAuth2/Storage/SessionInterface.php @@ -4,5 +4,266 @@ namespace OAuth2\Storage; interface SessionInterface { - public function validateAccessToken($access_token); + /** + * Create a new OAuth session + * + * Database query: + * + * + * INSERT INTO oauth_sessions (client_id, redirect_uri, owner_type, + * owner_id, auth_code, access_token, refresh_token, stage, first_requested, + * last_updated) VALUES ($clientId, $redirectUri, $type, $typeId, $authCode, + * $accessToken, $stage, UNIX_TIMESTAMP(NOW()), UNIX_TIMESTAMP(NOW())) + * + * + * @param string $clientId The client ID + * @param string $redirectUri The redirect URI + * @param string $type The session owner's type (default = "user") + * @param string $typeId The session owner's ID (default = "null") + * @param string $authCode The authorisation code (default = "null") + * @param string $accessToken The access token (default = "null") + * @param string $refreshToken The refresh token (default = "null") + * @param string $stage The stage of the session (default ="request") + * @return int The session ID + */ + public function new( + $clientId, + $redirectUri, + $type = 'user', + $typeId = null, + $authCode = null, + $accessToken = null, + $refreshToken = null, + $accessTokenExpire = null, + $stage = 'requested' + ); + + /** + * Update an OAuth session + * + * Database query: + * + * + * UPDATE oauth_sessions SET auth_code = $authCode, access_token = + * $accessToken, stage = $stage, last_updated = UNIX_TIMESTAMP(NOW()) WHERE + * id = $sessionId + * + * + * @param string $sessionId The session ID + * @param string $authCode The authorisation code (default = "null") + * @param string $accessToken The access token (default = "null") + * @param string $refreshToken The refresh token (default = "null") + * @param string $stage The stage of the session (default ="request") + * @return void + */ + public function update( + $sessionId, + $authCode = null, + $accessToken = null, + $refreshToken = null, + $accessTokenExpire = null, + $stage = 'requested' + ); + + /** + * Delete an OAuth session + * + * + * DELETE FROM oauth_sessions WHERE client_id = $clientId AND owner_type = + * $type AND owner_id = $typeId + * + * + * @param string $clientId The client ID + * @param string $type The session owner's type + * @param string $typeId The session owner's ID + * @return void + */ + public function delete( + $clientId, + $type, + $typeId + ); + + /** + * Return the session ID for a given session owner and client combination + * + * Database query: + * + * + * SELECT id FROM oauth_sessions WHERE client_id = $clientId + * AND owner_type = $type AND owner_id = $typeId + * + * + * @param string $type The session owner's type + * @param string $typeId The session owner's ID + * @param string $clientId The client ID + * @return string|null Return the session ID as an integer if + * found otherwise returns false + */ + public function exists( + $type, + $typeId, + $clientId + ); + + /** + * Validate that an authorisation code is valid + * + * Database query: + * + * + * SELECT id FROM oauth_sessions WHERE client_id = $clientID AND + * redirect_uri = $redirectUri AND auth_code = $authCode + * + * + * Response: + * + * + * Array + * ( + * [id] => (int) The session ID + * [client_id] => (string) The client ID + * [redirect_uri] => (string) The redirect URI + * [owner_type] => (string) The session owner type + * [owner_id] => (string) The session owner's ID + * [auth_code] => (string) The authorisation code + * [stage] => (string) The session's stage + * [first_requested] => (int) Unix timestamp of the time the session was + * first generated + * [last_updated] => (int) Unix timestamp of the time the session was + * last updated + * ) + * + * + * @param string $clientId The client ID + * @param string $redirectUri The redirect URI + * @param string $authCode The authorisation code + * @return int|bool Returns the session ID if the auth code + * is valid otherwise returns false + */ + public function validateAuthCode( + $clientId, + $redirectUri, + $authCode + ); + + /** + * Removes an authorisation code associated with a session + * + * Database query: + * + * + * UPDATE oauth_sessions SET auth_code = NULL WHERE id = $sessionId + * + * + * @param int $sessionId The OAuth session ID + * @return void + */ + public function removeAuthCode($sessionId); + + /** + * Sets a sessions access token + * + * Database query: + * + * + * UPDATE oauth_sessions SET access_token = $accessToken WHERE id = + * $sessionId + * + * + * @param int $sessionId The OAuth session ID + * @param string $accessToken The access token + * @return void + */ + public function setAccessToken( + $sessionId, + $accessToken + ); + + public function validateAccessToken($accessToken); + + /** + * Return the access token for a given session + * + * Database query: + * + * + * SELECT access_token FROM oauth_sessions WHERE id = $sessionId + * + * + * @param int $sessionId The OAuth session ID + * @return string|null Returns the access token as a string if + * found otherwise returns null + */ + public function getAccessToken($sessionId); + + public function validateRefreshToken($refreshToken, $clientId); + + /** + * Update the refresh token + * + * Database query: + * + * + * UPDATE oauth_sessions SET access_token = $newAccessToken, refresh_token = + * $newRefreshToken, access_toke_expires = $accessTokenExpires, last_updated = UNIX_TIMESTAMP(NOW()) WHERE + * id = $sessionId + * + * + * @param string $sessionId The session ID + * @param string $newAccessToken The new access token for this session + * @param string $newRefreshToken The new refresh token for the session + * @param int $accessTokenExpires The UNIX timestamp of when the new token expires + * @return void + */ + public function updateRefreshToken($sessionId, $newAccessToken, $newRefreshToken, $accessTokenExpires); + + /** + * Associates a session with a scope + * + * Database query: + * + * + * INSERT INTO oauth_session_scopes (session_id, scope) VALUE ($sessionId, + * $scope) + * + * + * @param int $sessionId The session ID + * @param string $scope The scope + * @return void + */ + public function associateScope( + $sessionId, + $scope + ); + + /** + * Return the scopes associated with an access token + * + * Database query: + * + * + * SELECT scopes.scope, scopes.name, scopes.description FROM + * oauth_session_scopes JOIN scopes ON oauth_session_scopes.scope = + * scopes.scope WHERE access_token = $accessToken + * + * + * Response: + * + * + * Array + * ( + * [0] => Array + * ( + * [scope] => (string) The scope + * [name] => (string) The scope's name + * [description] => (string) The scope's description + * ) + * ) + * + * + * @param string $accessToken The access token + * @return array + */ + public function getScopes($accessToken); }