pictcode / lib / Cake / Controller / Component / Auth / FormAuthenticate.php @ a0ff9cef
履歴 | 表示 | アノテート | ダウンロード (2.9 KB)
| 1 |
<?php
|
|---|---|
| 2 |
/**
|
| 3 |
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
| 4 |
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
| 5 |
*
|
| 6 |
* Licensed under The MIT License
|
| 7 |
* For full copyright and license information, please see the LICENSE.txt
|
| 8 |
* Redistributions of files must retain the above copyright notice.
|
| 9 |
*
|
| 10 |
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
| 11 |
* @link http://cakephp.org CakePHP(tm) Project
|
| 12 |
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
| 13 |
*/
|
| 14 |
|
| 15 |
App::uses('BaseAuthenticate', 'Controller/Component/Auth'); |
| 16 |
|
| 17 |
/**
|
| 18 |
* An authentication adapter for AuthComponent. Provides the ability to authenticate using POST
|
| 19 |
* data. Can be used by configuring AuthComponent to use it via the AuthComponent::$authenticate setting.
|
| 20 |
*
|
| 21 |
* ```
|
| 22 |
* $this->Auth->authenticate = array(
|
| 23 |
* 'Form' => array(
|
| 24 |
* 'scope' => array('User.active' => 1)
|
| 25 |
* )
|
| 26 |
* )
|
| 27 |
* ```
|
| 28 |
*
|
| 29 |
* When configuring FormAuthenticate you can pass in settings to which fields, model and additional conditions
|
| 30 |
* are used. See FormAuthenticate::$settings for more information.
|
| 31 |
*
|
| 32 |
* @package Cake.Controller.Component.Auth
|
| 33 |
* @since 2.0
|
| 34 |
* @see AuthComponent::$authenticate
|
| 35 |
*/
|
| 36 |
class FormAuthenticate extends BaseAuthenticate { |
| 37 |
|
| 38 |
/**
|
| 39 |
* Checks the fields to ensure they are supplied.
|
| 40 |
*
|
| 41 |
* @param CakeRequest $request The request that contains login information.
|
| 42 |
* @param string $model The model used for login verification.
|
| 43 |
* @param array $fields The fields to be checked.
|
| 44 |
* @return bool False if the fields have not been supplied. True if they exist.
|
| 45 |
*/
|
| 46 |
protected function _checkFields(CakeRequest $request, $model, $fields) { |
| 47 |
if (empty($request->data[$model])) { |
| 48 |
return false; |
| 49 |
} |
| 50 |
foreach (array($fields['username'], $fields['password']) as $field) { |
| 51 |
$value = $request->data($model . '.' . $field); |
| 52 |
if (empty($value) && $value !== '0' || !is_string($value)) { |
| 53 |
return false; |
| 54 |
} |
| 55 |
} |
| 56 |
return true; |
| 57 |
} |
| 58 |
|
| 59 |
/**
|
| 60 |
* Authenticates the identity contained in a request. Will use the `settings.userModel`, and `settings.fields`
|
| 61 |
* to find POST data that is used to find a matching record in the `settings.userModel`. Will return false if
|
| 62 |
* there is no post data, either username or password is missing, or if the scope conditions have not been met.
|
| 63 |
*
|
| 64 |
* @param CakeRequest $request The request that contains login information.
|
| 65 |
* @param CakeResponse $response Unused response object.
|
| 66 |
* @return mixed False on login failure. An array of User data on success.
|
| 67 |
*/
|
| 68 |
public function authenticate(CakeRequest $request, CakeResponse $response) { |
| 69 |
$userModel = $this->settings['userModel']; |
| 70 |
list(, $model) = pluginSplit($userModel); |
| 71 |
|
| 72 |
$fields = $this->settings['fields']; |
| 73 |
if (!$this->_checkFields($request, $model, $fields)) { |
| 74 |
return false; |
| 75 |
} |
| 76 |
return $this->_findUser( |
| 77 |
$request->data[$model][$fields['username']], |
| 78 |
$request->data[$model][$fields['password']] |
| 79 |
); |
| 80 |
} |
| 81 |
|
| 82 |
} |