From ced832ba62012e1fe40bde834bbf4a8872234d1f Mon Sep 17 00:00:00 2001 From: mark_story Date: Mon, 3 Jan 2011 18:17:27 -0500 Subject: [PATCH] Fixing issues with FormAuthenticate and plugin models. --- .../components/auth/form_authenticate.php | 18 +++++---- .../auth/form_authenticate.test.php | 39 ++++++++++++++++++- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/cake/libs/controller/components/auth/form_authenticate.php b/cake/libs/controller/components/auth/form_authenticate.php index e4ffb2dc649..d536499b521 100644 --- a/cake/libs/controller/components/auth/form_authenticate.php +++ b/cake/libs/controller/components/auth/form_authenticate.php @@ -72,19 +72,21 @@ public function __construct($settings) { */ public function authenticate(CakeRequest $request) { $userModel = $this->settings['userModel']; + list($plugin, $model) = pluginSplit($userModel); + $fields = $this->settings['fields']; - if (empty($request->data[$userModel])) { + if (empty($request->data[$model])) { return false; } if ( - empty($request->data[$userModel][$fields['username']]) || - empty($request->data[$userModel][$fields['password']]) + empty($request->data[$model][$fields['username']]) || + empty($request->data[$model][$fields['password']]) ) { return false; } $conditions = array( - $userModel . '.' . $fields['username'] => $request->data[$userModel][$fields['username']], - $userModel . '.' . $fields['password'] => $request->data[$userModel][$fields['password']], + $model . '.' . $fields['username'] => $request->data[$model][$fields['username']], + $model . '.' . $fields['password'] => $request->data[$model][$fields['password']], ); if (!empty($this->settings['scope'])) { $conditions = array_merge($conditions, $this->settings['scope']); @@ -93,10 +95,10 @@ public function authenticate(CakeRequest $request) { 'conditions' => $conditions, 'recursive' => 0 )); - if (empty($result) || empty($result[$userModel])) { + if (empty($result) || empty($result[$model])) { return false; } - unset($result[$userModel][$fields['password']]); - return $result[$userModel]; + unset($result[$model][$fields['password']]); + return $result[$model]; } } \ No newline at end of file diff --git a/cake/tests/cases/libs/controller/components/auth/form_authenticate.test.php b/cake/tests/cases/libs/controller/components/auth/form_authenticate.test.php index fe6547251a8..0c5e36a184e 100644 --- a/cake/tests/cases/libs/controller/components/auth/form_authenticate.test.php +++ b/cake/tests/cases/libs/controller/components/auth/form_authenticate.test.php @@ -28,7 +28,7 @@ */ class FormAuthenticateTest extends CakeTestCase { - public $fixtures = array('core.user'); + public $fixtures = array('core.user', 'core.auth_user'); /** * setup @@ -144,4 +144,41 @@ function testAuthenticateScopeFail() { $this->assertFalse($this->auth->authenticate($request)); } +/** + * test a model in a plugin. + * + * @return void + */ + function testPluginModel() { + Cache::delete('object_map', '_cake_core_'); + App::build(array( + 'plugins' => array(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS), + ), true); + App::objects('plugin', null, false); + + $PluginModel = ClassRegistry::init('TestPlugin.TestPluginAuthUser'); + $user['id'] = 1; + $user['username'] = 'gwoo'; + $user['password'] = Security::hash(Configure::read('Security.salt') . 'cake'); + $PluginModel->save($user, false); + + $this->auth->settings['userModel'] = 'TestPlugin.TestPluginAuthUser'; + $this->auth->settings['fields']['username'] = 'username'; + + $request = new CakeRequest('posts/index', false); + $request->data = array('TestPluginAuthUser' => array( + 'username' => 'gwoo', + 'password' => Security::hash('cake', null, true) + )); + + $result = $this->auth->authenticate($request); + $expected = array( + 'id' => 1, + 'username' => 'gwoo', + 'created' => '2007-03-17 01:16:23', + 'updated' => date('Y-m-d H:i:s') + ); + $this->assertEquals($expected, $result); + } + } \ No newline at end of file