mirror of
https://github.com/elyby/oauth2-server.git
synced 2024-11-02 00:43:11 +05:30
Updated PDO session
This commit is contained in:
parent
b7ca5d330b
commit
725ab74e5c
@ -6,90 +6,163 @@ use OAuth2\Storage\SessionInterface;
|
|||||||
|
|
||||||
class Session implements SessionInterface
|
class Session implements SessionInterface
|
||||||
{
|
{
|
||||||
public function createSession($params = array())
|
/**
|
||||||
|
* Create a new session
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
public function createSession(string $clientId, string $ownerType, string $ownerId)
|
||||||
{
|
{
|
||||||
$db = \ezcDbInstance::get();
|
$db = \ezcDbInstance::get();
|
||||||
|
|
||||||
$stmt = $db->prepare('INSERT INTO oauth_sessions (client_id, owner_type, owner_id) VALUE (:clientId, :ownerType, :ownerId)');
|
$stmt = $db->prepare('INSERT INTO oauth_sessions (client_id, owner_type, owner_id) VALUE (:clientId, :ownerType, :ownerId)');
|
||||||
$stmt->bindValue(':clientId', $params['client_id']);
|
$stmt->bindValue(':clientId', $clientId);
|
||||||
$stmt->bindValue(':ownerType', $params['owner_type']);
|
$stmt->bindValue(':ownerType', $ownerType);
|
||||||
$stmt->bindValue(':ownerId', $params['owner_id']);
|
$stmt->bindValue(':ownerId', $ownerId);
|
||||||
$stmt->execute();
|
$stmt->execute();
|
||||||
|
|
||||||
$sessionId = $db->lastInsertId();
|
return $db->lastInsertId();
|
||||||
|
|
||||||
if (isset($params['redirect_uri'])) {
|
|
||||||
$stmt = $db->prepare('INSERT INTO oauth_session_redirects (session_id, redirect_uri) VALUE (:sessionId, :redirectUri)');
|
|
||||||
$stmt->bindValue(':sessionId', $sessionId);
|
|
||||||
$stmt->bindValue(':redirectUri', $params['redirect_uri']);
|
|
||||||
$stmt->execute();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($params['auth_code'])) {
|
/**
|
||||||
$stmt = $db->prepare('INSERT INTO oauth_session_authcodes (session_id, auth_code, auth_code_expires, scope_ids) VALUE (:sessionId, :authCode, :authCodeExpires, :scopeIds)');
|
* Delete a session
|
||||||
$stmt->bindValue(':sessionId', $sessionId);
|
* @param string $clientId The client ID
|
||||||
$stmt->bindValue(':authCode', $params['auth_code']);
|
* @param string $ownerType The type of the session owner (e.g. "user")
|
||||||
$stmt->bindValue(':authCodeExpires', time() + 600);
|
* @param string $ownerId The ID of the session owner (e.g. "123")
|
||||||
$stmt->bindValue(':scopeIds', isset($params['scope_ids']) ? $params['scope_ids'] : null);
|
* @return void
|
||||||
$stmt->execute();
|
*/
|
||||||
}
|
public function deleteSession(string $clientId, string $ownerType, string $ownerId)
|
||||||
|
|
||||||
if (isset($params['access_token'])) {
|
|
||||||
$stmt = $db->prepare('INSERT INTO oauth_session_access_tokens (session_id, access_token, access_token_expires) VALUE (:sessionId, :accessToken, :accessTokenExpire)');
|
|
||||||
$stmt->bindValue(':sessionId', $sessionId);
|
|
||||||
$stmt->bindValue(':accessToken', $params['access_token']);
|
|
||||||
$stmt->bindValue(':accessTokenExpire', $params['access_token_expire']);
|
|
||||||
$stmt->execute();
|
|
||||||
|
|
||||||
$accessTokenId = $db->lastInsertId();
|
|
||||||
|
|
||||||
if (isset($params['refresh_token']) && $params['refresh_token'] !== null) {
|
|
||||||
$stmt = $db->prepare('INSERT INTO oauth_session_refresh_tokens (session_access_token_id, refresh_token) VALUE (:accessTokenId, :refreshToken)');
|
|
||||||
$stmt->bindValue(':accessTokenId', $accessTokenId);
|
|
||||||
$stmt->bindValue(':refreshToken', $params['refresh_token']);
|
|
||||||
$stmt->execute();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $sessionId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updateSession($sessionId, $params = array())
|
|
||||||
{
|
|
||||||
$db = \ezcDbInstance::get();
|
|
||||||
|
|
||||||
if (isset($params['access_token'])) {
|
|
||||||
$stmt = $db->prepare('INSERT INTO oauth_session_access_tokens (session_id, access_token, access_token_expires) VALUE (:sessionId, :accessToken, :accessTokenExpire)');
|
|
||||||
$stmt->bindValue(':sessionId', $sessionId);
|
|
||||||
$stmt->bindValue(':accessToken', $params['access_token']);
|
|
||||||
$stmt->bindValue(':accessTokenExpire', $params['access_token_expire']);
|
|
||||||
$stmt->execute();
|
|
||||||
|
|
||||||
$accessTokenId = $db->lastInsertId();
|
|
||||||
|
|
||||||
if (isset($params['refresh_token']) && $params['refresh_token'] !== null) {
|
|
||||||
$stmt = $db->prepare('INSERT INTO oauth_session_refresh_tokens (session_access_token_id, refresh_token) VALUE (:accessTokenId, :refreshToken)');
|
|
||||||
$stmt->bindValue(':accessTokenId', $accessTokenId);
|
|
||||||
$stmt->bindValue(':refreshToken', $params['refresh_token']);
|
|
||||||
$stmt->execute();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $accessTokenId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function deleteSession($clientId, $type, $typeId)
|
|
||||||
{
|
{
|
||||||
$db = \ezcDbInstance::get();
|
$db = \ezcDbInstance::get();
|
||||||
|
|
||||||
$stmt = $db->prepare('DELETE FROM oauth_sessions WHERE client_id = :clientId AND owner_type = :type AND owner_id = :typeId');
|
$stmt = $db->prepare('DELETE FROM oauth_sessions WHERE client_id = :clientId AND owner_type = :type AND owner_id = :typeId');
|
||||||
$stmt->bindValue(':clientId', $clientId);
|
$stmt->bindValue(':clientId', $clientId);
|
||||||
$stmt->bindValue(':type', $type);
|
$stmt->bindValue(':type', $ownerType);
|
||||||
$stmt->bindValue(':typeId', $typeId);
|
$stmt->bindValue(':typeId', $ownerId);
|
||||||
$stmt->execute();
|
$stmt->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateAuthCode($clientId, $redirectUri, $authCode)
|
/**
|
||||||
|
* Associate a redirect URI with a session
|
||||||
|
* @param int $sessionId The session ID
|
||||||
|
* @param string $redirectUri The redirect URI
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function associateRedirectUri(int $sessionId, string $redirectUri)
|
||||||
|
{
|
||||||
|
$stmt = $db->prepare('INSERT INTO oauth_session_redirects (session_id, redirect_uri) VALUE (:sessionId, :redirectUri)');
|
||||||
|
$stmt->bindValue(':sessionId', $sessionId);
|
||||||
|
$stmt->bindValue(':redirectUri', $redirectUri);
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an associated redirect URI
|
||||||
|
* @param int $sessionId The session ID
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function removeRedirectUri(int $sessionId)
|
||||||
|
{
|
||||||
|
throw new \Exception('Not implemented - ' . debug_backtrace()[0]['function']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Associate an access token with a session
|
||||||
|
* @param int $sessionId The session ID
|
||||||
|
* @param string $accessToken The access token
|
||||||
|
* @param int $expireTime Unix timestamp of the access token expiry time
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function associateAccessToken(int $sessionId, string $accessToken, int $expireTime)
|
||||||
|
{
|
||||||
|
$stmt = $db->prepare('INSERT INTO oauth_session_access_tokens (session_id, access_token, access_token_expires) VALUE (:sessionId, :accessToken, :accessTokenExpire)');
|
||||||
|
$stmt->bindValue(':sessionId', $sessionId);
|
||||||
|
$stmt->bindValue(':accessToken', $accessToken);
|
||||||
|
$stmt->bindValue(':accessTokenExpire', $expireTime);
|
||||||
|
$stmt->execute();
|
||||||
|
|
||||||
|
return $db->lastInsertId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an associated access token from a session
|
||||||
|
* @param int $sessionId The session ID
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function removeAccessToken(int $sessionId)
|
||||||
|
{
|
||||||
|
$stmt = $db->prepare('INSERT INTO oauth_session_refresh_tokens (session_access_token_id, refresh_token) VALUE (:accessTokenId, :refreshToken)');
|
||||||
|
$stmt->bindValue(':accessTokenId', $accessTokenId);
|
||||||
|
$stmt->bindValue(':refreshToken', $params['refresh_token']);
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Associate a refresh token with a session
|
||||||
|
* @param int $accessTokenId The access token ID
|
||||||
|
* @param string $refreshToken The refresh token
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function associateRefreshToken(int $accessTokenId, string $refreshToken)
|
||||||
|
{
|
||||||
|
$stmt = $db->prepare('INSERT INTO oauth_session_refresh_tokens (session_access_token_id, refresh_token) VALUE (:accessTokenId, :refreshToken)');
|
||||||
|
$stmt->bindValue(':accessTokenId', $accessTokenId);
|
||||||
|
$stmt->bindValue(':refreshToken', $refreshToken);
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an associated refresh token from a session
|
||||||
|
* @param int $sessionId The session ID
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function removeRefreshToken(int $sessionId)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assocate an authorization code with a session
|
||||||
|
* @param int $sessionId The session ID
|
||||||
|
* @param string $authCode The authorization code
|
||||||
|
* @param int $expireTime Unix timestamp of the access token expiry time
|
||||||
|
* @param string $scopeIds Comma seperated list of scope IDs to be later associated (default = null)
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function associateAuthCode(int $sessionId, string $authCode, int $expireTime, string $scopeIds = null)
|
||||||
|
{
|
||||||
|
$stmt = $db->prepare('INSERT INTO oauth_session_authcodes (session_id, auth_code, auth_code_expires, scope_ids) VALUE (:sessionId, :authCode, :authCodeExpires, :scopeIds)');
|
||||||
|
$stmt->bindValue(':sessionId', $sessionId);
|
||||||
|
$stmt->bindValue(':authCode', $authCode);
|
||||||
|
$stmt->bindValue(':authCodeExpires', $expireTime);
|
||||||
|
$stmt->bindValue(':scopeIds', $scopeIds);
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an associated authorization token from a session
|
||||||
|
* @param int $sessionId The session ID
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function removeAuthCode(int $sessionId)
|
||||||
|
{
|
||||||
|
$db = \ezcDbInstance::get();
|
||||||
|
|
||||||
|
$stmt = $db->prepare('DELETE FROM oauth_session_authcodes WHERE session_id = :sessionId');
|
||||||
|
$stmt->bindValue(':sessionId', $sessionId);
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate an authorization code
|
||||||
|
* @param string $clientId The client ID
|
||||||
|
* @param string $redirectUri The redirect URI
|
||||||
|
* @param string $authCode The authorization code
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function validateAuthCode(string $clientId, string $redirectUri, string $authCode)
|
||||||
{
|
{
|
||||||
$db = \ezcDbInstance::get();
|
$db = \ezcDbInstance::get();
|
||||||
|
|
||||||
@ -105,36 +178,33 @@ class Session implements SessionInterface
|
|||||||
return ($result === false) ? false : (array) $result;
|
return ($result === false) ? false : (array) $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteAuthCode($sessionId)
|
/**
|
||||||
|
* Validate an access token
|
||||||
|
* @param string $accessToken [description]
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function validateAccessToken(string $accessToken)
|
||||||
{
|
{
|
||||||
$db = \ezcDbInstance::get();
|
throw new \Exception('Not implemented - ' . debug_backtrace()[0]['function']);
|
||||||
|
|
||||||
$stmt = $db->prepare('DELETE FROM oauth_session_authcodes WHERE session_id = :sessionId');
|
|
||||||
$stmt->bindValue(':sessionId', $sessionId);
|
|
||||||
$stmt->execute();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateAccessToken($accessToken)
|
/**
|
||||||
|
* Validate a refresh token
|
||||||
|
* @param string $accessToken The access token
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function validateRefreshToken(string $accessToken)
|
||||||
{
|
{
|
||||||
throw new \Exception('Not implemented '.debug_backtrace()[0]['function']);
|
throw new \Exception('Not implemented - ' . debug_backtrace()[0]['function']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAccessToken($sessionId)
|
/**
|
||||||
{
|
* Associate a scope with an access token
|
||||||
throw new \Exception('Not implemented '.debug_backtrace()[0]['function']);
|
* @param int $accessTokenId The ID of the access token
|
||||||
}
|
* @param int $scopeId The ID of the scope
|
||||||
|
* @return void
|
||||||
public function validateRefreshToken($refreshToken, $clientId)
|
*/
|
||||||
{
|
public function associateScope(int $accessTokenId, int $scopeId)
|
||||||
throw new \Exception('Not implemented '.debug_backtrace()[0]['function']);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updateRefreshToken($sessionId, $newAccessToken, $newRefreshToken, $accessTokenExpires)
|
|
||||||
{
|
|
||||||
throw new \Exception('Not implemented '.debug_backtrace()[0]['function']);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function associateScope($accessTokenId, $scopeId)
|
|
||||||
{
|
{
|
||||||
$db = \ezcDbInstance::get();
|
$db = \ezcDbInstance::get();
|
||||||
|
|
||||||
@ -144,8 +214,13 @@ class Session implements SessionInterface
|
|||||||
$stmt->execute();
|
$stmt->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getScopes($sessionId)
|
/**
|
||||||
|
* Get all associated access tokens for an access token
|
||||||
|
* @param string $accessToken The access token
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getScopes(string $accessToken)
|
||||||
{
|
{
|
||||||
throw new \Exception('Not implemented '.debug_backtrace()[0]['function']);
|
throw new \Exception('Not implemented - ' . debug_backtrace()[0]['function']);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user