Skip to content

Commit

Permalink
Adding ability set component configuration from component settings fo…
Browse files Browse the repository at this point in the history
…r SecurityComponent.
  • Loading branch information
markstory committed Dec 17, 2009
1 parent 3a6b29d commit e45fcf4
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
15 changes: 14 additions & 1 deletion cake/libs/controller/components/security.php
Expand Up @@ -168,10 +168,23 @@ class SecurityComponent extends Object {
*/
var $_action = null;

/**
* Initialize the SecurityComponent
*
* @param object $controller Controller instance for the request
* @param array $settings Settings to set to the component
* @return void
* @access public
*/
function initialize(&$controller, $settings = array()) {
$this->_set($settings);
}

/**
* Component startup. All security checking happens here.
*
* @param object $controller Instantiating controller
* @return void
* @access public
*/
function startup(&$controller) {
Expand Down Expand Up @@ -342,7 +355,7 @@ function loginRequest($options = array()) {
if (strtolower($options['type']) == 'digest') {
$out[] = 'qop="auth"';
$out[] = 'nonce="' . uniqid("") . '"';
$out[] = 'opaque="' . md5($options['realm']).'"';
$out[] = 'opaque="' . md5($options['realm']) . '"';
}

return $auth . ' ' . implode(',', $out);
Expand Down
25 changes: 25 additions & 0 deletions cake/tests/cases/libs/controller/components/security.test.php
Expand Up @@ -166,6 +166,31 @@ function endTest() {
unset($this->Controller);
}

/**
* test that initalize can set properties.
*
* @return void
*/
function testInitialize() {
$settings = array(
'requirePost' => array('edit', 'update'),
'requireSecure' => array('update_account'),
'requireGet' => array('index'),
'validatePost' => false,
'loginUsers' => array(
'mark' => 'password'
),
'requireLogin' => array('login'),
);
$this->Controller->Security->initialize($this->Controller, $settings);
$this->assertEqual($this->Controller->Security->requirePost, $settings['requirePost']);
$this->assertEqual($this->Controller->Security->requireSecure, $settings['requireSecure']);
$this->assertEqual($this->Controller->Security->requireGet, $settings['requireGet']);
$this->assertEqual($this->Controller->Security->validatePost, $settings['validatePost']);
$this->assertEqual($this->Controller->Security->loginUsers, $settings['loginUsers']);
$this->assertEqual($this->Controller->Security->requireLogin, $settings['requireLogin']);
}

/**
* testStartup method
*
Expand Down

0 comments on commit e45fcf4

Please sign in to comment.