00001 <?php
00002
00016
00017
00018
00019 class AccessKeyManager {
00020 var $accessKeyDao;
00021
00026 function AccessKeyManager() {
00027 $this->accessKeyDao =& DAORegistry::getDAO('AccessKeyDAO');
00028 $this->_performPeriodicCleanup();
00029 }
00030
00036 function generateKeyHash($key) {
00037 return md5($key);
00038 }
00039
00048 function &validateKey($context, $userId, $keyHash, $assocId = null) {
00049 $accessKey =& $this->accessKeyDao->getAccessKeyByKeyHash($context, $userId, $keyHash, $assocId);
00050 return $accessKey;
00051 }
00052
00061 function createKey($context, $userId, $assocId, $expiryDays) {
00062 $accessKey =& new AccessKey();
00063 $accessKey->setContext($context);
00064 $accessKey->setUserId($userId);
00065 $accessKey->setAssocId($assocId);
00066 $accessKey->setExpiryDate(Core::getCurrentDate(time() + (60 * 60 * 24 * $expiryDays)));
00067
00068 $key = Validation::generatePassword();
00069 $accessKey->setKeyHash($this->generateKeyHash($key));
00070
00071 $this->accessKeyDao->insertAccessKey($accessKey);
00072
00073 return $key;
00074 }
00075
00079 function _performPeriodicCleanup() {
00080 if (time() % 100 == 0) {
00081 $accessKeyDao = &DAORegistry::getDAO('AccessKeyDAO');
00082 $accessKeyDao->deleteExpiredKeys();
00083 }
00084 }
00085 }
00086
00087 ?>