Browse Source

Reorganized captcha code.

tags/2.0.0-beta
Qiang Xue 11 years ago
parent
commit
3d5388ff2b
  1. 2
      apps/advanced/frontend/controllers/SiteController.php
  2. 2
      apps/advanced/frontend/views/site/contact.php
  3. 2
      apps/basic/controllers/SiteController.php
  4. 2
      apps/basic/views/site/contact.php
  5. 2
      framework/yii/assets.php
  6. 2
      framework/yii/assets/yii.captcha.js
  7. 4
      framework/yii/base/Model.php
  8. 5
      framework/yii/captcha/Captcha.php
  9. 11
      framework/yii/captcha/CaptchaAction.php
  10. 3
      framework/yii/captcha/CaptchaAsset.php
  11. 6
      framework/yii/captcha/CaptchaValidator.php
  12. 0
      framework/yii/captcha/SpicyRice.md
  13. 0
      framework/yii/captcha/SpicyRice.ttf
  14. 16
      framework/yii/classes.php
  15. 2
      framework/yii/validators/Validator.php
  16. 2
      tests/unit/data/base/Singer.php

2
apps/advanced/frontend/controllers/SiteController.php

@ -16,7 +16,7 @@ class SiteController extends Controller
{ {
return array( return array(
'captcha' => array( 'captcha' => array(
'class' => 'yii\web\CaptchaAction', 'class' => 'yii\captcha\CaptchaAction',
), ),
); );
} }

2
apps/advanced/frontend/views/site/contact.php

@ -1,7 +1,7 @@
<?php <?php
use yii\helpers\Html; use yii\helpers\Html;
use yii\widgets\ActiveForm; use yii\widgets\ActiveForm;
use yii\widgets\Captcha; use yii\captcha\Captcha;
/** /**
* @var yii\base\View $this * @var yii\base\View $this

2
apps/basic/controllers/SiteController.php

@ -13,7 +13,7 @@ class SiteController extends Controller
{ {
return array( return array(
'captcha' => array( 'captcha' => array(
'class' => 'yii\web\CaptchaAction', 'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_DEV ? 'testme' : null, 'fixedVerifyCode' => YII_ENV_DEV ? 'testme' : null,
), ),
); );

2
apps/basic/views/site/contact.php

@ -1,7 +1,7 @@
<?php <?php
use yii\helpers\Html; use yii\helpers\Html;
use yii\widgets\ActiveForm; use yii\widgets\ActiveForm;
use yii\widgets\Captcha; use yii\captcha\Captcha;
/** /**
* @var yii\base\View $this * @var yii\base\View $this

2
framework/yii/assets.php

@ -6,6 +6,6 @@ return array(
yii\validators\PunycodeAsset::className(), yii\validators\PunycodeAsset::className(),
yii\validators\ValidationAsset::className(), yii\validators\ValidationAsset::className(),
yii\widgets\ActiveFormAsset::className(), yii\widgets\ActiveFormAsset::className(),
yii\widgets\CaptchaAsset::className(), yii\captcha\CaptchaAsset::className(),
yii\widgets\MaskedInputAsset::className(), yii\widgets\MaskedInputAsset::className(),
); );

2
framework/yii/assets/yii.captcha.js

@ -1,7 +1,7 @@
/** /**
* Yii Captcha widget. * Yii Captcha widget.
* *
* This is the JavaScript widget used by the yii\widgets\Captcha widget. * This is the JavaScript widget used by the yii\captcha\Captcha widget.
* *
* @link http://www.yiiframework.com/ * @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC * @copyright Copyright (c) 2008 Yii Software LLC

4
framework/yii/base/Model.php

@ -117,8 +117,8 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
* array('password', 'compare', 'compareAttribute' => 'password2', 'on' => 'register'), * array('password', 'compare', 'compareAttribute' => 'password2', 'on' => 'register'),
* // an inline validator defined via the "authenticate()" method in the model class * // an inline validator defined via the "authenticate()" method in the model class
* array('password', 'authenticate', 'on' => 'login'), * array('password', 'authenticate', 'on' => 'login'),
* // a validator of class "CaptchaValidator" * // a validator of class "DateRangeValidator"
* array('captcha', 'CaptchaValidator'), * array('dateRange', 'DateRangeValidator'),
* ); * );
* ~~~ * ~~~
* *

5
framework/yii/widgets/Captcha.php → framework/yii/captcha/Captcha.php

@ -5,13 +5,14 @@
* @license http://www.yiiframework.com/license/ * @license http://www.yiiframework.com/license/
*/ */
namespace yii\widgets; namespace yii\Captcha;
use Yii; use Yii;
use yii\base\InvalidConfigException; use yii\base\InvalidConfigException;
use yii\helpers\Html; use yii\helpers\Html;
use yii\helpers\Json; use yii\helpers\Json;
use yii\web\CaptchaAction; use yii\widgets\InputWidget;
/** /**
* Captcha renders a CAPTCHA image and an input field that takes user-entered verification code. * Captcha renders a CAPTCHA image and an input field that takes user-entered verification code.

11
framework/yii/web/CaptchaAction.php → framework/yii/captcha/CaptchaAction.php

@ -5,12 +5,11 @@
* @license http://www.yiiframework.com/license/ * @license http://www.yiiframework.com/license/
*/ */
namespace yii\web; namespace yii\captcha;
use Yii; use Yii;
use yii\base\Action; use yii\base\Action;
use yii\base\InvalidConfigException; use yii\base\InvalidConfigException;
use yii\widgets\Captcha;
/** /**
* CaptchaAction renders a CAPTCHA image. * CaptchaAction renders a CAPTCHA image.
@ -85,7 +84,7 @@ class CaptchaAction extends Action
/** /**
* @var string the TrueType font file. This can be either a file path or path alias. * @var string the TrueType font file. This can be either a file path or path alias.
*/ */
public $fontFile = '@yii/web/SpicyRice.ttf'; public $fontFile = '@yii/captcha/SpicyRice.ttf';
/** /**
* @var string the fixed verification code. When this property is set, * @var string the fixed verification code. When this property is set,
* [[getVerifyCode()]] will always return the value of this property. * [[getVerifyCode()]] will always return the value of this property.
@ -116,12 +115,14 @@ class CaptchaAction extends Action
if (isset($_GET[self::REFRESH_GET_VAR])) { if (isset($_GET[self::REFRESH_GET_VAR])) {
// AJAX request for regenerating code // AJAX request for regenerating code
$code = $this->getVerifyCode(true); $code = $this->getVerifyCode(true);
/** @var \yii\web\Controller $controller */
$controller = $this->controller;
return json_encode(array( return json_encode(array(
'hash1' => $this->generateValidationHash($code), 'hash1' => $this->generateValidationHash($code),
'hash2' => $this->generateValidationHash(strtolower($code)), 'hash2' => $this->generateValidationHash(strtolower($code)),
// we add a random 'v' parameter so that FireFox can refresh the image // we add a random 'v' parameter so that FireFox can refresh the image
// when src attribute of image tag is changed // when src attribute of image tag is changed
'url' => $this->controller->createUrl($this->id, array('v' => uniqid())), 'url' => $controller->createUrl($this->id, array('v' => uniqid())),
)); ));
} else { } else {
$this->setHttpHeaders(); $this->setHttpHeaders();
@ -153,7 +154,7 @@ class CaptchaAction extends Action
return $this->fixedVerifyCode; return $this->fixedVerifyCode;
} }
$session = Yii::$app->session; $session = Yii::$app->getSession();
$session->open(); $session->open();
$name = $this->getSessionKey(); $name = $this->getSessionKey();
if ($session[$name] === null || $regenerate) { if ($session[$name] === null || $regenerate) {

3
framework/yii/widgets/CaptchaAsset.php → framework/yii/captcha/CaptchaAsset.php

@ -5,7 +5,8 @@
* @license http://www.yiiframework.com/license/ * @license http://www.yiiframework.com/license/
*/ */
namespace yii\widgets; namespace yii\captcha;
use yii\web\AssetBundle; use yii\web\AssetBundle;
/** /**

6
framework/yii/validators/CaptchaValidator.php → framework/yii/captcha/CaptchaValidator.php

@ -5,11 +5,13 @@
* @license http://www.yiiframework.com/license/ * @license http://www.yiiframework.com/license/
*/ */
namespace yii\validators; namespace yii\captcha;
use Yii; use Yii;
use yii\base\InvalidConfigException; use yii\base\InvalidConfigException;
use yii\helpers\Html; use yii\helpers\Html;
use yii\validators\ValidationAsset;
use yii\validators\Validator;
/** /**
* CaptchaValidator validates that the attribute value is the same as the verification code displayed in the CAPTCHA. * CaptchaValidator validates that the attribute value is the same as the verification code displayed in the CAPTCHA.
@ -74,7 +76,7 @@ class CaptchaValidator extends Validator
/** /**
* Returns the CAPTCHA action object. * Returns the CAPTCHA action object.
* @throws InvalidConfigException * @throws InvalidConfigException
* @return \yii\web\CaptchaAction the action object * @return \yii\captcha\CaptchaAction the action object
*/ */
public function getCaptchaAction() public function getCaptchaAction()
{ {

0
framework/yii/web/SpicyRice.md → framework/yii/captcha/SpicyRice.md

0
framework/yii/web/SpicyRice.ttf → framework/yii/captcha/SpicyRice.ttf

16
framework/yii/classes.php

@ -91,6 +91,10 @@ return array(
'yii\caching\WinCache' => YII_PATH . '/caching/WinCache.php', 'yii\caching\WinCache' => YII_PATH . '/caching/WinCache.php',
'yii\caching\XCache' => YII_PATH . '/caching/XCache.php', 'yii\caching\XCache' => YII_PATH . '/caching/XCache.php',
'yii\caching\ZendDataCache' => YII_PATH . '/caching/ZendDataCache.php', 'yii\caching\ZendDataCache' => YII_PATH . '/caching/ZendDataCache.php',
'yii\captcha\Captcha' => YII_PATH . '/captcha/Captcha.php',
'yii\captcha\CaptchaAction' => YII_PATH . '/captcha/CaptchaAction.php',
'yii\captcha\CaptchaAsset' => YII_PATH . '/captcha/CaptchaAsset.php',
'yii\captcha\CaptchaValidator' => YII_PATH . '/captcha/CaptchaValidator.php',
'yii\data\ActiveDataProvider' => YII_PATH . '/data/ActiveDataProvider.php', 'yii\data\ActiveDataProvider' => YII_PATH . '/data/ActiveDataProvider.php',
'yii\data\ArrayDataProvider' => YII_PATH . '/data/ArrayDataProvider.php', 'yii\data\ArrayDataProvider' => YII_PATH . '/data/ArrayDataProvider.php',
'yii\data\DataProvider' => YII_PATH . '/data/DataProvider.php', 'yii\data\DataProvider' => YII_PATH . '/data/DataProvider.php',
@ -167,7 +171,6 @@ return array(
'yii\rbac\PhpManager' => YII_PATH . '/rbac/PhpManager.php', 'yii\rbac\PhpManager' => YII_PATH . '/rbac/PhpManager.php',
'yii\requirements\YiiRequirementChecker' => YII_PATH . '/requirements/YiiRequirementChecker.php', 'yii\requirements\YiiRequirementChecker' => YII_PATH . '/requirements/YiiRequirementChecker.php',
'yii\validators\BooleanValidator' => YII_PATH . '/validators/BooleanValidator.php', 'yii\validators\BooleanValidator' => YII_PATH . '/validators/BooleanValidator.php',
'yii\validators\CaptchaValidator' => YII_PATH . '/validators/CaptchaValidator.php',
'yii\validators\CompareValidator' => YII_PATH . '/validators/CompareValidator.php', 'yii\validators\CompareValidator' => YII_PATH . '/validators/CompareValidator.php',
'yii\validators\DateValidator' => YII_PATH . '/validators/DateValidator.php', 'yii\validators\DateValidator' => YII_PATH . '/validators/DateValidator.php',
'yii\validators\DefaultValueValidator' => YII_PATH . '/validators/DefaultValueValidator.php', 'yii\validators\DefaultValueValidator' => YII_PATH . '/validators/DefaultValueValidator.php',
@ -193,7 +196,6 @@ return array(
'yii\web\AssetConverter' => YII_PATH . '/web/AssetConverter.php', 'yii\web\AssetConverter' => YII_PATH . '/web/AssetConverter.php',
'yii\web\AssetManager' => YII_PATH . '/web/AssetManager.php', 'yii\web\AssetManager' => YII_PATH . '/web/AssetManager.php',
'yii\web\CacheSession' => YII_PATH . '/web/CacheSession.php', 'yii\web\CacheSession' => YII_PATH . '/web/CacheSession.php',
'yii\web\CaptchaAction' => YII_PATH . '/web/CaptchaAction.php',
'yii\web\Controller' => YII_PATH . '/web/Controller.php', 'yii\web\Controller' => YII_PATH . '/web/Controller.php',
'yii\web\Cookie' => YII_PATH . '/web/Cookie.php', 'yii\web\Cookie' => YII_PATH . '/web/Cookie.php',
'yii\web\CookieCollection' => YII_PATH . '/web/CookieCollection.php', 'yii\web\CookieCollection' => YII_PATH . '/web/CookieCollection.php',
@ -225,14 +227,18 @@ return array(
'yii\widgets\ActiveFormAsset' => YII_PATH . '/widgets/ActiveFormAsset.php', 'yii\widgets\ActiveFormAsset' => YII_PATH . '/widgets/ActiveFormAsset.php',
'yii\widgets\Block' => YII_PATH . '/widgets/Block.php', 'yii\widgets\Block' => YII_PATH . '/widgets/Block.php',
'yii\widgets\Breadcrumbs' => YII_PATH . '/widgets/Breadcrumbs.php', 'yii\widgets\Breadcrumbs' => YII_PATH . '/widgets/Breadcrumbs.php',
'yii\widgets\Captcha' => YII_PATH . '/widgets/Captcha.php',
'yii\widgets\CaptchaAsset' => YII_PATH . '/widgets/CaptchaAsset.php',
'yii\widgets\ContentDecorator' => YII_PATH . '/widgets/ContentDecorator.php', 'yii\widgets\ContentDecorator' => YII_PATH . '/widgets/ContentDecorator.php',
'yii\widgets\DetailView' => YII_PATH . '/widgets/DetailView.php', 'yii\widgets\DetailView' => YII_PATH . '/widgets/DetailView.php',
'yii\widgets\FragmentCache' => YII_PATH . '/widgets/FragmentCache.php', 'yii\widgets\FragmentCache' => YII_PATH . '/widgets/FragmentCache.php',
'yii\widgets\grid\CheckboxColumn' => YII_PATH . '/widgets/grid/CheckboxColumn.php',
'yii\widgets\grid\Column' => YII_PATH . '/widgets/grid/Column.php',
'yii\widgets\grid\DataColumn' => YII_PATH . '/widgets/grid/DataColumn.php',
'yii\widgets\GridView' => YII_PATH . '/widgets/GridView.php',
'yii\widgets\InputWidget' => YII_PATH . '/widgets/InputWidget.php', 'yii\widgets\InputWidget' => YII_PATH . '/widgets/InputWidget.php',
'yii\widgets\LinkPager' => YII_PATH . '/widgets/LinkPager.php', 'yii\widgets\LinkPager' => YII_PATH . '/widgets/LinkPager.php',
'yii\widgets\ListPager' => YII_PATH . '/widgets/ListPager.php', 'yii\widgets\LinkSorter' => YII_PATH . '/widgets/LinkSorter.php',
'yii\widgets\ListView' => YII_PATH . '/widgets/ListView.php',
'yii\widgets\ListViewBase' => YII_PATH . '/widgets/ListViewBase.php',
'yii\widgets\MaskedInput' => YII_PATH . '/widgets/MaskedInput.php', 'yii\widgets\MaskedInput' => YII_PATH . '/widgets/MaskedInput.php',
'yii\widgets\MaskedInputAsset' => YII_PATH . '/widgets/MaskedInputAsset.php', 'yii\widgets\MaskedInputAsset' => YII_PATH . '/widgets/MaskedInputAsset.php',
'yii\widgets\Menu' => YII_PATH . '/widgets/Menu.php', 'yii\widgets\Menu' => YII_PATH . '/widgets/Menu.php',

2
framework/yii/validators/Validator.php

@ -49,7 +49,7 @@ abstract class Validator extends Component
*/ */
public static $builtInValidators = array( public static $builtInValidators = array(
'boolean' => 'yii\validators\BooleanValidator', 'boolean' => 'yii\validators\BooleanValidator',
'captcha' => 'yii\validators\CaptchaValidator', 'captcha' => 'yii\captcha\CaptchaValidator',
'compare' => 'yii\validators\CompareValidator', 'compare' => 'yii\validators\CompareValidator',
'date' => 'yii\validators\DateValidator', 'date' => 'yii\validators\DateValidator',
'default' => 'yii\validators\DefaultValueValidator', 'default' => 'yii\validators\DefaultValueValidator',

2
tests/unit/data/base/Singer.php

@ -15,7 +15,7 @@ class Singer extends Model
return array( return array(
array('lastName', 'default', 'value' => 'Lennon'), array('lastName', 'default', 'value' => 'Lennon'),
array('lastName', 'required'), array('lastName', 'required'),
array('underscore_style', 'yii\validators\CaptchaValidator'), array('underscore_style', 'yii\captcha\CaptchaValidator'),
); );
} }
} }

Loading…
Cancel
Save