Commit 8633d0f9 by Qiang Xue

`yii\web\Request::cookieValidationKey` is now automatically generated by the…

`yii\web\Request::cookieValidationKey` is now automatically generated by the installation script for the basic and advanced application templates
parent 73f1daad
...@@ -13,6 +13,10 @@ return [ ...@@ -13,6 +13,10 @@ return [
'bootstrap' => ['log'], 'bootstrap' => ['log'],
'modules' => [], 'modules' => [],
'components' => [ 'components' => [
'request' => [
// a secret key used to validate cookies. You may modify this key with your own one.
'cookieValidationKey' => '',
],
'user' => [ 'user' => [
'identityClass' => 'common\models\User', 'identityClass' => 'common\models\User',
'enableAutoLogin' => true, 'enableAutoLogin' => true,
......
{ {
"name": "yiisoft/yii2-app-advanced", "name": "yiisoft/yii2-app-advanced",
"description": "Yii 2 Advanced Application Template", "description": "Yii 2 Advanced Application Template",
"keywords": ["yii2", "framework", "advanced", "application template"], "keywords": ["yii2", "framework", "advanced", "application template"],
"homepage": "http://www.yiiframework.com/", "homepage": "http://www.yiiframework.com/",
"type": "project", "type": "project",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"support": { "support": {
"issues": "https://github.com/yiisoft/yii2/issues?state=open", "issues": "https://github.com/yiisoft/yii2/issues?state=open",
"forum": "http://www.yiiframework.com/forum/", "forum": "http://www.yiiframework.com/forum/",
"wiki": "http://www.yiiframework.com/wiki/", "wiki": "http://www.yiiframework.com/wiki/",
"irc": "irc://irc.freenode.net/yii", "irc": "irc://irc.freenode.net/yii",
"source": "https://github.com/yiisoft/yii2" "source": "https://github.com/yiisoft/yii2"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"require": { "require": {
"php": ">=5.4.0", "php": ">=5.4.0",
"yiisoft/yii2": "*", "yiisoft/yii2": "*",
"yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-bootstrap": "*",
"yiisoft/yii2-swiftmailer": "*" "yiisoft/yii2-swiftmailer": "*"
}, },
"require-dev": { "require-dev": {
"yiisoft/yii2-codeception": "*", "yiisoft/yii2-codeception": "*",
"yiisoft/yii2-debug": "*", "yiisoft/yii2-debug": "*",
"yiisoft/yii2-gii": "*" "yiisoft/yii2-gii": "*"
}, },
"suggest": { "suggest": {
"codeception/codeception": "Codeception, 2.0.* is currently works well with Yii.", "codeception/codeception": "Codeception, 2.0.* is currently works well with Yii.",
"codeception/specify": "BDD style code blocks for PHPUnit and Codeception", "codeception/specify": "BDD style code blocks for PHPUnit and Codeception",
"codeception/verify": "BDD Assertions for PHPUnit and Codeception", "codeception/verify": "BDD Assertions for PHPUnit and Codeception",
"yiisoft/yii2-faker": "Fixtures generator for Yii2 based on Faker lib" "yiisoft/yii2-faker": "Fixtures generator for Yii2 based on Faker lib"
}, },
"scripts": { "scripts": {
"post-create-project-cmd": [ "post-create-project-cmd": [
"yii\\composer\\Installer::setPermission" "yii\\composer\\Installer::setPermission",
] "yii\\composer\\Installer::generateCookieValidationKey"
}, ]
"config": { },
"process-timeout": 1800 "config": {
}, "process-timeout": 1800
"extra": { },
"writable": [ "extra": {
"backend/runtime", "writable": [
"backend/web/assets", "backend/runtime",
"backend/web/assets",
"frontend/runtime", "frontend/runtime",
"frontend/web/assets" "frontend/web/assets"
] ],
} "config": [
"frontend/config/main.php",
"backend/config/main.php"
]
}
} }
...@@ -12,6 +12,10 @@ return [ ...@@ -12,6 +12,10 @@ return [
'bootstrap' => ['log'], 'bootstrap' => ['log'],
'controllerNamespace' => 'frontend\controllers', 'controllerNamespace' => 'frontend\controllers',
'components' => [ 'components' => [
'request' => [
// a secret key used to validate cookies. You may modify this key with your own one.
'cookieValidationKey' => '',
],
'user' => [ 'user' => [
'identityClass' => 'common\models\User', 'identityClass' => 'common\models\User',
'enableAutoLogin' => true, 'enableAutoLogin' => true,
......
{ {
"name": "yiisoft/yii2-app-basic", "name": "yiisoft/yii2-app-basic",
"description": "Yii 2 Basic Application Template", "description": "Yii 2 Basic Application Template",
"keywords": ["yii2", "framework", "basic", "application template"], "keywords": ["yii2", "framework", "basic", "application template"],
"homepage": "http://www.yiiframework.com/", "homepage": "http://www.yiiframework.com/",
"type": "project", "type": "project",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"support": { "support": {
"issues": "https://github.com/yiisoft/yii2/issues?state=open", "issues": "https://github.com/yiisoft/yii2/issues?state=open",
"forum": "http://www.yiiframework.com/forum/", "forum": "http://www.yiiframework.com/forum/",
"wiki": "http://www.yiiframework.com/wiki/", "wiki": "http://www.yiiframework.com/wiki/",
"irc": "irc://irc.freenode.net/yii", "irc": "irc://irc.freenode.net/yii",
"source": "https://github.com/yiisoft/yii2" "source": "https://github.com/yiisoft/yii2"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"require": { "require": {
"php": ">=5.4.0", "php": ">=5.4.0",
"yiisoft/yii2": "*", "yiisoft/yii2": "*",
"yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-bootstrap": "*",
"yiisoft/yii2-swiftmailer": "*" "yiisoft/yii2-swiftmailer": "*"
}, },
"require-dev": { "require-dev": {
"yiisoft/yii2-codeception": "*", "yiisoft/yii2-codeception": "*",
"yiisoft/yii2-debug": "*", "yiisoft/yii2-debug": "*",
"yiisoft/yii2-gii": "*" "yiisoft/yii2-gii": "*"
}, },
"suggest": { "suggest": {
"codeception/codeception": "Codeception, 2.0.* is currently works well with Yii.", "codeception/codeception": "Codeception, 2.0.* is currently works well with Yii.",
"codeception/specify": "BDD style code blocks for PHPUnit and Codeception", "codeception/specify": "BDD style code blocks for PHPUnit and Codeception",
"codeception/verify": "BDD Assertions for PHPUnit and Codeception" "codeception/verify": "BDD Assertions for PHPUnit and Codeception"
}, },
"scripts": { "scripts": {
"post-create-project-cmd": [ "post-create-project-cmd": [
"yii\\composer\\Installer::setPermission" "yii\\composer\\Installer::setPermission",
] "yii\\composer\\Installer::generateCookieValidationKey"
}, ]
"config": { },
"process-timeout": 1800 "config": {
}, "process-timeout": 1800
"extra": { },
"writable": [ "extra": {
"runtime", "writable": [
"web/assets" "runtime",
], "web/assets"
"executable": [ ],
"yii" "executable": [
] "yii"
} ],
"config": [
"config/web.php"
]
}
} }
...@@ -7,6 +7,10 @@ $config = [ ...@@ -7,6 +7,10 @@ $config = [
'basePath' => dirname(__DIR__), 'basePath' => dirname(__DIR__),
'bootstrap' => ['log'], 'bootstrap' => ['log'],
'components' => [ 'components' => [
'request' => [
// a secret key used to validate cookies. You may modify this key with your own one.
'cookieValidationKey' => '',
],
'cache' => [ 'cache' => [
'class' => 'yii\caching\FileCache', 'class' => 'yii\caching\FileCache',
], ],
......
...@@ -22,6 +22,7 @@ class Installer extends LibraryInstaller ...@@ -22,6 +22,7 @@ class Installer extends LibraryInstaller
const EXTRA_BOOTSTRAP = 'bootstrap'; const EXTRA_BOOTSTRAP = 'bootstrap';
const EXTRA_WRITABLE = 'writable'; const EXTRA_WRITABLE = 'writable';
const EXTRA_EXECUTABLE = 'executable'; const EXTRA_EXECUTABLE = 'executable';
const EXTRA_CONFIG = 'config';
const EXTENSION_FILE = 'yiisoft/extensions.php'; const EXTENSION_FILE = 'yiisoft/extensions.php';
...@@ -258,4 +259,33 @@ EOF ...@@ -258,4 +259,33 @@ EOF
} }
} }
} }
/**
* Generates a cookie validation key for every app config listed in "config" in extra section.
* @param CommandEvent $event
*/
public static function generateCookieValidationKey($event)
{
$extra = $event->getComposer()->getPackage()->getExtra();
if (empty($extra[self::EXTRA_CONFIG])) {
return;
}
$key = self::generateRandomString();
foreach ((array) $extra[self::EXTRA_CONFIG] as $config) {
if (is_file($config)) {
$content = preg_replace('/(("|\')cookieValidationKey("|\')\s*=>\s*)(""|\'\')/i', "\\1'$key'", file_get_contents($config));
file_put_contents($config, $content);
}
}
}
public static function generateRandomString()
{
if (!extension_loaded('mcrypt')) {
throw new \Exception('The mcrypt PHP extension is required by Yii2.');
}
$length = 32;
$bytes = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
return strtr(substr(base64_encode($bytes), 0, $length), '+/=', '_-.');
}
} }
...@@ -188,6 +188,7 @@ Yii Framework 2 Change Log ...@@ -188,6 +188,7 @@ Yii Framework 2 Change Log
- Chg: Changed the default value of the `keyPrefix` property of cache components to be null (qiangxue) - Chg: Changed the default value of the `keyPrefix` property of cache components to be null (qiangxue)
- Chg: Added `prefix` column to `yii\log\DbTarget` to have the same amount of information logged as in files and emails (cebe) - Chg: Added `prefix` column to `yii\log\DbTarget` to have the same amount of information logged as in files and emails (cebe)
- Chg: Use `limit(null)` instead of `limit(-1)` in migration controller to be compatible to more backends (cebe) - Chg: Use `limit(null)` instead of `limit(-1)` in migration controller to be compatible to more backends (cebe)
- Chg: `yii\web\Request::cookieValidationKey` is now automatically generated by the installation script for the basic and advanced application templates (qiangxue)
- New #3911: Added `yii\behaviors\SluggableBehavior` that fills the specified model attribute with the transliterated and adjusted version to use in URLs (creocoder) - New #3911: Added `yii\behaviors\SluggableBehavior` that fills the specified model attribute with the transliterated and adjusted version to use in URLs (creocoder)
- New #4193: Added `yii\filters\Cors` CORS filter to allow Cross Origin Resource Sharing (pgaultier) - New #4193: Added `yii\filters\Cors` CORS filter to allow Cross Origin Resource Sharing (pgaultier)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment