pictcode / lib / Cake / Controller / Component / Auth / FormAuthenticate.php @ 635eef61
履歴 | 表示 | アノテート | ダウンロード (2.9 KB)
| 1 | 635eef61 | spyder1211 | <?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 | } |