From: Michael M Slusarz Date: Wed, 17 Mar 2010 22:54:51 +0000 (-0600) Subject: Use global injector binder to get Token object using Horde token config X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=bd49579543283c08cfc8b91c664214e8824eaa35;p=horde.git Use global injector binder to get Token object using Horde token config --- diff --git a/framework/Core/lib/Horde/Core/Binder/Token.php b/framework/Core/lib/Horde/Core/Binder/Token.php new file mode 100644 index 000000000..5772a5e06 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Binder/Token.php @@ -0,0 +1,18 @@ +setLogger($injector->getInstance('Horde_Log_Logger')); + + return $token; + } + + public function equals(Horde_Injector_Binder $binder) + { + return false; + } +} diff --git a/framework/Core/lib/Horde/Registry.php b/framework/Core/lib/Horde/Registry.php index b5e6d42ac..20438bdf8 100644 --- a/framework/Core/lib/Horde/Registry.php +++ b/framework/Core/lib/Horde/Registry.php @@ -241,6 +241,7 @@ class Horde_Registry 'Horde_Notification' => new Horde_Core_Binder_Notification(), 'Horde_Perms' => new Horde_Core_Binder_Perms(), 'Horde_Template' => new Horde_Core_Binder_Template(), + 'Horde_Token' => new Horde_Core_Binder_Token(), 'Horde_Vfs' => new Horde_Core_Binder_Vfs(), 'Net_DNS_Resolver' => new Horde_Core_Binder_Dns() ); diff --git a/framework/Core/package.xml b/framework/Core/package.xml index c7062208b..d470e1eae 100644 --- a/framework/Core/package.xml +++ b/framework/Core/package.xml @@ -72,6 +72,7 @@ Application Framework. + @@ -200,6 +201,7 @@ Application Framework. + diff --git a/framework/Form/Form.php b/framework/Form/Form.php index b17d9678a..0d374b729 100644 --- a/framework/Form/Form.php +++ b/framework/Form/Form.php @@ -412,7 +412,6 @@ class Horde_Form { } if ($this->_useFormToken) { - require_once 'Horde/Token.php'; $token = Horde_Token::generateId($this->_name); $_SESSION['horde_form_secrets'][$token] = true; $this->_preserveVarByPost($this->_name . '_formToken', $token); @@ -473,7 +472,6 @@ class Horde_Form { } if ($this->_useFormToken) { - require_once 'Horde/Token.php'; $token = Horde_Token::generateId($this->_name); $_SESSION['horde_form_secrets'][$token] = true; $this->_preserveVarByPost($this->_name . '_formToken', $token); @@ -531,7 +529,6 @@ class Horde_Form { function preserve($vars) { if ($this->_useFormToken) { - require_once 'Horde/Token.php'; $token = Horde_Token::generateId($this->_name); $_SESSION['horde_form_secrets'][$token] = true; $this->_preserveVarByPost($this->_name . '_formToken', $token); @@ -612,15 +609,7 @@ class Horde_Form { $this->_autofilled = true; if ($this->_useFormToken) { - global $conf; - require_once 'Horde/Token.php'; - if (isset($conf['token'])) { - /* If there is a configured token system, set it up. */ - $tokenSource = &Horde_Token::singleton($conf['token']['driver'], Horde::getDriverConfig('token', $conf['token']['driver'])); - } else { - /* Default to the file system if no config. */ - $tokenSource = &Horde_Token::singleton('file'); - } + $tokenSource = $GLOBALS['injector']->getInstance('Horde_Token'); $passedToken = $vars->get($this->_name . '_formToken'); if (!empty($passedToken) && !$tokenSource->verify($passedToken)) { $this->_errors['_formToken'] = _("This form has already been processed."); diff --git a/framework/Model/lib/Horde/Form.php b/framework/Model/lib/Horde/Form.php index bccd710e6..4ba9b047e 100644 --- a/framework/Model/lib/Horde/Form.php +++ b/framework/Model/lib/Horde/Form.php @@ -370,14 +370,7 @@ class Horde_Form { $this->_autofilled = true; if ($this->_useFormToken) { - global $conf; - if (isset($conf['token'])) { - /* If there is a configured token system, set it up. */ - $tokenSource = Horde_Token::factory($conf['token']['driver'], Horde::getDriverConfig('token', $conf['token']['driver'])); - } else { - /* Default to the file system if no config. */ - $tokenSource = Horde_Token::factory('file'); - } + $tokenSource = $GLOBALS['injector']->getInstance('Horde_Token'); if (!$tokenSource->verify($this->_vars->get($this->_name . '_formToken'))) { $this->_errors['_formToken'] = _("This form has already been processed."); } diff --git a/framework/Token/lib/Horde/Token.php b/framework/Token/lib/Horde/Token.php index 88353c87a..2bc92d055 100644 --- a/framework/Token/lib/Horde/Token.php +++ b/framework/Token/lib/Horde/Token.php @@ -23,6 +23,13 @@ class Horde_Token static protected $_instances = array(); /** + * Logger. + * + * @var Horde_Log_Logger + */ + protected $_logger; + + /** * Hash of parameters necessary to use the chosen backend. * * @var array @@ -49,7 +56,7 @@ class Horde_Token $driver = basename($driver); $class = __CLASS__; - if ($driver == 'none') { + if ($driver != 'none') { $class .= '_' . ucfirst($driver); } @@ -99,9 +106,19 @@ class Horde_Token /** * Constructor. + * + * @param array $params Configuration parameters: + *
+     * 'logger' - (Horde_Log_Logger) A logger object.
+     * 
*/ protected function __construct($params) { + if (isset($params['logger'])) { + $this->_logger = $params['logger']; + unset($params['logger']); + } + $this->_params = $params; } @@ -116,18 +133,6 @@ class Horde_Token } /** - * Generates a connection id and returns it. - * - * @param string $seed A unique ID to be included in the token. - * - * @return string The generated id string. - */ - public function generateId($seed = '') - { - return Horde_Url::uriB64Encode(pack('H*', sha1(uniqid(mt_rand(), true) . $seed . (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '')))); - } - - /** * Checks if the given token has been previously used. First * purges all expired tokens. Then retrieves current tokens for * the given ip address. If the specified token was not found, @@ -184,4 +189,16 @@ class Horde_Token { } + /** + * Generates a connection id and returns it. + * + * @param string $seed A unique ID to be included in the token. + * + * @return string The generated id string. + */ + static public function generateId($seed = '') + { + return Horde_Url::uriB64Encode(pack('H*', sha1(uniqid(mt_rand(), true) . $seed . (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '')))); + } + } diff --git a/framework/Token/lib/Horde/Token/Sql.php b/framework/Token/lib/Horde/Token/Sql.php index 7d91d15c1..bb1922350 100644 --- a/framework/Token/lib/Horde/Token/Sql.php +++ b/framework/Token/lib/Horde/Token/Sql.php @@ -105,7 +105,9 @@ class Horde_Token_Sql extends Horde_Token /* Return an error if the update fails. */ $result = $this->_write_db->query($query, $values); if ($result instanceof PEAR_Error) { - Horde::logMessage($result, 'ERR'); + if ($this->_logger) { + $this->_logger->log($result, 'ERR'); + } throw new Horde_Exception_Prior($result); } } @@ -131,7 +133,9 @@ class Horde_Token_Sql extends Horde_Token $result = $this->_db->getOne($query, $values); if ($result instanceof PEAR_Error) { - Horde::logMessage($result, 'ERR'); + if ($this->_logger) { + $this->_logger->log($result, 'ERR'); + } return false; } else { return !empty($result); @@ -156,7 +160,9 @@ class Horde_Token_Sql extends Horde_Token $result = $this->_write_db->query($query, $values); if ($result instanceof PEAR_Error) { - Horde::logMessage($result, 'ERR'); + if ($this->_logger) { + $this->_logger->log($result, 'ERR'); + } throw new Horde_Exception_Prior($result); } } diff --git a/framework/Token/package.xml b/framework/Token/package.xml index eeb2143ce..117c69acc 100644 --- a/framework/Token/package.xml +++ b/framework/Token/package.xml @@ -63,6 +63,12 @@ http://pear.php.net/dtd/package-2.0.xsd"> pear.horde.org + + + Log + pear.horde.org + + diff --git a/imp/compose.php b/imp/compose.php index 535240600..0a3ceb92f 100644 --- a/imp/compose.php +++ b/imp/compose.php @@ -80,9 +80,7 @@ $uid = $vars->uid; /* Check for duplicate submits. */ if ($vars->compose_formToken) { - $tokenSource = isset($conf['token']) - ? Horde_Token::factory($conf['token']['driver'], Horde::getDriverConfig('token', $conf['token']['driver'])) - : Horde_Token::factory('file'); + $tokenSource = $injector->getInstance('Horde_Token'); try { if (!$tokenSource->verify($vars->compose_formToken)) {