Drupal modules for browsing and managing Fedora-based digital repositories.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.2 KiB

<?php
/**
* @file
*/
define('TOKEN_TIMEOUT', 30000);
function islandora_get_object_token($pid, $dsid) {
global $user;
$time = time();
$token = hash("sha256", $user->uid . $pid . $dsid . $time);
$id = db_insert("islandora_authtokens")
->fields(array(
'token' => $token,
'uid' => $user->uid,
'pid' => $pid,
'dsid' => $dsid,
'time' => $time,
))
->execute();
return $token;
}
function islandora_validate_object_token($pid, $dsid, $token) {
global $user;
// check for database token
$time = time();
$result = db_select("islandora_authtokens", "id")
->fields("id")
->condition('token', $token, '=')
->condition('uid', $user->uid, '=')
->condition('pid', $pid, '=')
->condition('dsid', $dsid, '=')
->condition('time', $time, '<=')
->condition('time', $time-TOKEN_TIMEOUT, '>')
->execute()
->rowCount();
//** this is for one-time use tokens **//
// remove the authtoken (if it exists) so it can't be used again
db_delete("islandora_authtokens")
->condition('token', $token, '=')
->condition('uid', $user->uid, '=')
->condition('pid', $pid, '=')
->condition('dsid', $dsid, '=')
->execute();
// print_r($result);
return $result > 0;
}