diff --git a/src/League/OAuth2/Server/Storage/AccessTokenInterface.php b/src/League/OAuth2/Server/Storage/AccessTokenInterface.php new file mode 100644 index 00000000..e2e5086d --- /dev/null +++ b/src/League/OAuth2/Server/Storage/AccessTokenInterface.php @@ -0,0 +1,24 @@ + + * @copyright Copyright (c) 2013 PHP League of Extraordinary Packages + * @license http://mit-license.org/ + * @link http://github.com/php-loep/oauth2-server + */ + +namespace League\OAuth2\Server\Storage; + +interface AccessTokenInterface +{ + public function getToken($token); + + public function getTokenScopes($token); + + public function createAccessToken($token, $expireTime, $sessionId); + + public function associateScope($token, $scopeId); +} diff --git a/src/League/OAuth2/Server/Storage/AuthCodeInterface.php b/src/League/OAuth2/Server/Storage/AuthCodeInterface.php new file mode 100644 index 00000000..c8e4831f --- /dev/null +++ b/src/League/OAuth2/Server/Storage/AuthCodeInterface.php @@ -0,0 +1,18 @@ + + * @copyright Copyright (c) 2013 PHP League of Extraordinary Packages + * @license http://mit-license.org/ + * @link http://github.com/php-loep/oauth2-server + */ + +namespace League\OAuth2\Server\Storage; + +interface AuthCodeInterface +{ + public function getCode($code); +} diff --git a/src/League/OAuth2/Server/Storage/ClientInterface.php b/src/League/OAuth2/Server/Storage/ClientInterface.php index ac1a485c..2732976b 100644 --- a/src/League/OAuth2/Server/Storage/ClientInterface.php +++ b/src/League/OAuth2/Server/Storage/ClientInterface.php @@ -20,21 +20,22 @@ interface ClientInterface * * * # Client ID + redirect URI - * SELECT oauth_clients.id, oauth_clients.secret, oauth_client_endpoints.redirect_uri, oauth_clients.name, - * oauth_clients.auto_approve - * FROM oauth_clients LEFT JOIN oauth_client_endpoints ON oauth_client_endpoints.client_id = oauth_clients.id + * SELECT oauth_clients.id, oauth_clients.secret, oauth_endpoints.redirect_uri, oauth_clients.name + * FROM oauth_clients + * LEFT JOIN oauth_client_endpoints ON oauth_client_endpoints.client_id = oauth_clients.id * WHERE oauth_clients.id = :clientId AND oauth_client_endpoints.redirect_uri = :redirectUri * * # Client ID + client secret - * SELECT oauth_clients.id, oauth_clients.secret, oauth_clients.name, oauth_clients.auto_approve FROM oauth_clients - * WHERE oauth_clients.id = :clientId AND oauth_clients.secret = :clientSecret + * SELECT oauth_clients.id, oauth_clients.secret, oauth_clients.name + * FROM oauth_clients + * WHERE oauth_clients.id = :clientId AND oauth_clients.secret = :clientSecret * * # Client ID + client secret + redirect URI - * SELECT oauth_clients.id, oauth_clients.secret, oauth_client_endpoints.redirect_uri, oauth_clients.name, - * oauth_clients.auto_approve FROM oauth_clients LEFT JOIN oauth_client_endpoints - * ON oauth_client_endpoints.client_id = oauth_clients.id - * WHERE oauth_clients.id = :clientId AND oauth_clients.secret = :clientSecret AND - * oauth_client_endpoints.redirect_uri = :redirectUri + * SELECT oauth_clients.id, oauth_clients.secret, oauth_client_endpoints.redirect_uri, oauth_clients.name + * FROM oauth_clients LEFT JOIN oauth_client_endpoints + * ON oauth_client_endpoints.client_id = oauth_clients.id + * WHERE oauth_clients.id = :clientId AND oauth_clients.secret = :clientSecret AND + * oauth_client_endpoints.redirect_uri = :redirectUri * * * Response: @@ -42,11 +43,10 @@ interface ClientInterface * * Array * ( - * [client_id] => (string) The client ID - * [client secret] => (string) The client secret - * [redirect_uri] => (string) The redirect URI used in this request - * [name] => (string) The name of the client - * [auto_approve] => (bool) Whether the client should auto approve + * [id] => (string) The client ID + * [secret] => (string) The client secret + * [redirect_uri] => (string) The redirect URI used in this request + * [name] => (string) The name of the client * ) * * diff --git a/src/League/OAuth2/Server/Storage/RefreshTokenInterface.php b/src/League/OAuth2/Server/Storage/RefreshTokenInterface.php new file mode 100644 index 00000000..68026121 --- /dev/null +++ b/src/League/OAuth2/Server/Storage/RefreshTokenInterface.php @@ -0,0 +1,18 @@ + + * @copyright Copyright (c) 2013 PHP League of Extraordinary Packages + * @license http://mit-license.org/ + * @link http://github.com/php-loep/oauth2-server + */ + +namespace League\OAuth2\Server\Storage; + +interface RefreshTokenInterface +{ + public function getToken($token, $clientId); +} diff --git a/src/League/OAuth2/Server/Storage/SessionInterface.php b/src/League/OAuth2/Server/Storage/SessionInterface.php index 051c4dbb..a5cd62f7 100644 --- a/src/League/OAuth2/Server/Storage/SessionInterface.php +++ b/src/League/OAuth2/Server/Storage/SessionInterface.php @@ -1,4 +1,5 @@ + * + * + * + * @param int $sessionId + * @return array (As described above) + */ + public function getSession($sessionId); + + /** + * Get a session's scopes + * + * Response: + * + * + * + * + * @param int $sessionId + * @return array (As described aboce) + */ + public function getSessionScopes($sessionId); + /** * Create a new session - * - * Example SQL query: - * - * - * INSERT INTO oauth_sessions (client_id, owner_type, owner_id) - * VALUE (:clientId, :ownerType, :ownerId) - * - * - * @param string $clientId The client ID - * @param string $ownerType The type of the session owner (e.g. "user") - * @param string $ownerId The ID of the session owner (e.g. "123") - * @return int The session ID + * @param string $ownerType Session owner's type (user, client) + * @param string $ownerId Session owner's ID + * @param string $clientId Client ID + * @param string $clientRedirectUri Client redirect URI (default = null) + * @return int Session ID */ - public function createSession($clientId, $ownerType, $ownerId); + public function createSession($ownerType, $ownerId, $clientId, $clientRedirectUri = null); /** - * Delete a session - * - * Example SQL query: - * - * - * DELETE FROM oauth_sessions WHERE client_id = :clientId AND owner_type = :type AND owner_id = :typeId - * - * - * @param string $clientId The client ID - * @param string $ownerType The type of the session owner (e.g. "user") - * @param string $ownerId The ID of the session owner (e.g. "123") + * Associate a scope with a session + * @param int $sessionId + * @param int|string $scopeId The scopes ID might be an integer or string * @return void */ - public function deleteSession($clientId, $ownerType, $ownerId); - - /** - * Associate a redirect URI with a session - * - * Example SQL query: - * - * - * INSERT INTO oauth_session_redirects (session_id, redirect_uri) VALUE (:sessionId, :redirectUri) - * - * - * @param int $sessionId The session ID - * @param string $redirectUri The redirect URI - * @return void - */ - public function associateRedirectUri($sessionId, $redirectUri); - - /** - * Associate an access token with a session - * - * Example SQL query: - * - * - * INSERT INTO oauth_session_access_tokens (session_id, access_token, access_token_expires) - * VALUE (:sessionId, :accessToken, :accessTokenExpire) - * - * - * @param int $sessionId The session ID - * @param string $accessToken The access token - * @param int $expireTime Unix timestamp of the access token expiry time - * @return int The access token ID - */ - public function associateAccessToken($sessionId, $accessToken, $expireTime); - - /** - * Associate a refresh token with a session - * - * Example SQL query: - * - * - * INSERT INTO oauth_session_refresh_tokens (session_access_token_id, refresh_token, refresh_token_expires, - * client_id) VALUE (:accessTokenId, :refreshToken, :expireTime, :clientId) - * - * - * @param int $accessTokenId The access token ID - * @param string $refreshToken The refresh token - * @param int $expireTime Unix timestamp of the refresh token expiry time - * @param string $clientId The client ID - * @return void - */ - public function associateRefreshToken($accessTokenId, $refreshToken, $expireTime, $clientId); - - /** - * Assocate an authorization code with a session - * - * Example SQL query: - * - * - * INSERT INTO oauth_session_authcodes (session_id, auth_code, auth_code_expires) - * VALUE (:sessionId, :authCode, :authCodeExpires) - * - * - * @param int $sessionId The session ID - * @param string $authCode The authorization code - * @param int $expireTime Unix timestamp of the access token expiry time - * @return int The auth code ID - */ - public function associateAuthCode($sessionId, $authCode, $expireTime); - - /** - * Remove an associated authorization token from a session - * - * Example SQL query: - * - * - * DELETE FROM oauth_session_authcodes WHERE session_id = :sessionId - * - * - * @param int $sessionId The session ID - * @return void - */ - public function removeAuthCode($sessionId); - - /** - * Validate an authorization code - * - * Example SQL query: - * - * - * SELECT oauth_sessions.id AS session_id, oauth_session_authcodes.id AS authcode_id FROM oauth_sessions - * JOIN oauth_session_authcodes ON oauth_session_authcodes.`session_id` = oauth_sessions.id - * JOIN oauth_session_redirects ON oauth_session_redirects.`session_id` = oauth_sessions.id WHERE - * oauth_sessions.client_id = :clientId AND oauth_session_authcodes.`auth_code` = :authCode - * AND `oauth_session_authcodes`.`auth_code_expires` >= :time AND - * `oauth_session_redirects`.`redirect_uri` = :redirectUri - * - * - * Expected response: - * - * - * array( - * 'session_id' => (int) - * 'authcode_id' => (int) - * ) - * - * - * @param string $clientId The client ID - * @param string $redirectUri The redirect URI - * @param string $authCode The authorization code - * @return array|bool False if invalid or array as above - */ - public function validateAuthCode($clientId, $redirectUri, $authCode); - - /** - * Validate an access token - * - * Example SQL query: - * - * - * SELECT session_id, oauth_sessions.`client_id`, oauth_sessions.`owner_id`, oauth_sessions.`owner_type` - * FROM `oauth_session_access_tokens` JOIN oauth_sessions ON oauth_sessions.`id` = session_id WHERE - * access_token = :accessToken AND access_token_expires >= UNIX_TIMESTAMP(NOW()) - * - * - * Expected response: - * - * - * array( - * 'session_id' => (int), - * 'client_id' => (string), - * 'owner_id' => (string), - * 'owner_type' => (string) - * ) - * - * - * @param string $accessToken The access token - * @return array|bool False if invalid or an array as above - */ - public function validateAccessToken($accessToken); - - /** - * Removes a refresh token - * - * Example SQL query: - * - * - * DELETE FROM `oauth_session_refresh_tokens` WHERE refresh_token = :refreshToken - * - * - * @param string $refreshToken The refresh token to be removed - * @return void - */ - public function removeRefreshToken($refreshToken); - - /** - * Validate a refresh token - * - * Example SQL query: - * - * - * SELECT session_access_token_id FROM `oauth_session_refresh_tokens` WHERE refresh_token = :refreshToken - * AND refresh_token_expires >= UNIX_TIMESTAMP(NOW()) AND client_id = :clientId - * - * - * @param string $refreshToken The access token - * @param string $clientId The client ID - * @return int|bool The ID of the access token the refresh token is linked to (or false if invalid) - */ - public function validateRefreshToken($refreshToken, $clientId); - - /** - * Get an access token by ID - * - * Example SQL query: - * - * - * SELECT * FROM `oauth_session_access_tokens` WHERE `id` = :accessTokenId - * - * - * Expected response: - * - * - * array( - * 'id' => (int), - * 'session_id' => (int), - * 'access_token' => (string), - * 'access_token_expires' => (int) - * ) - * - * - * @param int $accessTokenId The access token ID - * @return array - */ - public function getAccessToken($accessTokenId); - - /** - * Associate scopes with an auth code (bound to the session) - * - * Example SQL query: - * - * - * INSERT INTO `oauth_session_authcode_scopes` (`oauth_session_authcode_id`, `scope_id`) VALUES - * (:authCodeId, :scopeId) - * - * - * @param int $authCodeId The auth code ID - * @param int $scopeId The scope ID - * @return void - */ - public function associateAuthCodeScope($authCodeId, $scopeId); - - /** - * Get the scopes associated with an auth code - * - * Example SQL query: - * - * - * SELECT scope_id FROM `oauth_session_authcode_scopes` WHERE oauth_session_authcode_id = :authCodeId - * - * - * Expected response: - * - * - * array( - * array( - * 'scope_id' => (int) - * ), - * array( - * 'scope_id' => (int) - * ), - * ... - * ) - * - * - * @param int $oauthSessionAuthCodeId The session ID - * @return array - */ - public function getAuthCodeScopes($oauthSessionAuthCodeId); - - /** - * Associate a scope with an access token - * - * Example SQL query: - * - * - * INSERT INTO `oauth_session_token_scopes` (`session_access_token_id`, `scope_id`) VALUE (:accessTokenId, :scopeId) - * - * - * @param int $accessTokenId The ID of the access token - * @param int $scopeId The ID of the scope - * @return void - */ - public function associateScope($accessTokenId, $scopeId); - - /** - * Get all associated access tokens for an access token - * - * Example SQL query: - * - * - * SELECT oauth_scopes.* FROM oauth_session_token_scopes JOIN oauth_session_access_tokens - * ON oauth_session_access_tokens.`id` = `oauth_session_token_scopes`.`session_access_token_id` - * JOIN oauth_scopes ON oauth_scopes.id = `oauth_session_token_scopes`.`scope_id` - * WHERE access_token = :accessToken - * - * - * Expected response: - * - * - * array ( - * array( - * 'id' => (int), - * 'scope' => (string), - * 'name' => (string), - * 'description' => (string) - * ), - * ... - * ... - * ) - * - * - * @param string $accessToken The access token - * @return array - */ - public function getScopes($accessToken); + public function associateScope($sessionId, $scopeId); }