namespace OCA\Grauphel\Lib;
/**
- * Token store
+ * OAuth token store
*
* @category Tools
* @package Grauphel
*/
class TokenStorage
{
+ /**
+ * @var \OCP\IDBConnection
+ */
+ protected $db;
+
+ public function __construct()
+ {
+ $this->db = \OC::$server->getDatabaseConnection();
+ }
+
+ /**
+ * Delete token
+ *
+ * @param string $type Token type: temp, access, verify
+ * @param string $tokenKey Random token string to load
+ *
+ * @return void
+ *
+ * @throws OAuthException When token does not exist
+ */
+ public function delete($type, $tokenKey)
+ {
+ $this->db->executeQuery(
+ 'DELETE FROM `*PREFIX*grauphel_oauth_tokens`'
+ . ' WHERE `token_key` = ? AND `token_type` = ?',
+ array($tokenKey, $type)
+ );
+ }
+
/**
* Store the given token
*
*/
public function store(Token $token)
{
- \OC_DB::executeAudited(
+ $this->db->executeQuery(
'INSERT INTO `*PREFIX*grauphel_oauth_tokens`'
- . '(`token_user`, `token_type`, `token_key`, `token_secret`, `token_verifier`, `token_callback`)'
- . ' VALUES(?, ?, ?, ?, ?, ?)',
+ . '(`token_user`, `token_type`, `token_key`, `token_secret`, `token_verifier`, `token_callback`, `token_client`, `token_lastuse`)'
+ . ' VALUES(?, ?, ?, ?, ?, ?, ?, ?)',
array(
$token->user,
$token->type,
$token->tokenKey,
(string) $token->secret,
(string) $token->verifier,
- (string) $token->callback
+ (string) $token->callback,
+ (string) $token->client,
+ date('Y-m-d H:i:s'),
)
);
}
{
try {
$token = $this->load($type, $tokenKey);
- \OC_DB::executeAudited(
- 'DELETE FROM `*PREFIX*grauphel_oauth_tokens`'
- . ' WHERE `token_key` = ? AND `token_type` = ?',
- array($tokenKey, $type)
- );
+ $this->delete($type, $tokenKey);
return $token;
} catch (OAuthException $e) {
throw $e;
*/
public function load($type, $tokenKey)
{
- $tokenRow = \OC_DB::executeAudited(
+ $tokenRow = $this->db->executeQuery(
'SELECT * FROM `*PREFIX*grauphel_oauth_tokens`'
. ' WHERE `token_key` = ? AND `token_type` = ?',
array($tokenKey, $type)
- )->fetchRow();
+ )->fetch();
if ($tokenRow === false) {
throw new OAuthException(
*/
public function loadForUser($username, $type)
{
- $result = \OC_DB::executeAudited(
+ $result = $this->db->executeQuery(
'SELECT * FROM `*PREFIX*grauphel_oauth_tokens`'
. ' WHERE `token_user` = ? AND `token_type` = ?',
array($username, $type)
);
$tokens = array();
- while ($tokenRow = $result->fetchRow()) {
+ while ($tokenRow = $result->fetch()) {
$tokens[] = $this->fromDb($tokenRow);
}
return $tokens;
}
+ /**
+ * Update the "last use" field of a token
+ *
+ * @param string $tokenKey Random token string to load
+ *
+ * @return void
+ */
+ public function updateLastUse($tokenKey)
+ {
+ $this->db->executeQuery(
+ 'UPDATE `*PREFIX*grauphel_oauth_tokens`'
+ . ' SET `token_lastuse` = ? WHERE `token_key` = ?',
+ array(
+ date('Y-m-d H:i:s'),
+ $tokenKey,
+ )
+ );
+ }
+
protected function fromDb($tokenRow)
{
$token = new Token();
$token->user = $tokenRow['token_user'];
$token->verifier = $tokenRow['token_verifier'];
$token->callback = $tokenRow['token_callback'];
+ $token->client = $tokenRow['token_client'];
+ $token->lastuse = \strtotime($tokenRow['token_lastuse']);
return $token;
}
}