pictcode / lib / Cake / Controller / Component / Auth / FormAuthenticate.php @ 0b1b8047
履歴 | 表示 | アノテート | ダウンロード (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 | } |