mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 21:41:19 +08:00
Fix #18048: Use Instance::ensure() to set User::$accessChecker
This commit is contained in:
@ -7,6 +7,7 @@ Yii Framework 2 Change Log
|
|||||||
- Bug #18028: Fix division by zero exception in Table.php::calculateRowHeight (fourhundredfour)
|
- Bug #18028: Fix division by zero exception in Table.php::calculateRowHeight (fourhundredfour)
|
||||||
- Enh #18019: Allow jQuery 3.5.0 to be installed (wouter90)
|
- Enh #18019: Allow jQuery 3.5.0 to be installed (wouter90)
|
||||||
- Bug #18026: Fix `ArrayHelper::getValue()` did not work with `ArrayAccess` objects (mikk150)
|
- Bug #18026: Fix `ArrayHelper::getValue()` did not work with `ArrayAccess` objects (mikk150)
|
||||||
|
- Enh #18048: Use `Instance::ensure()` to set `User::$accessChecker` (lav45)
|
||||||
|
|
||||||
|
|
||||||
2.0.35 May 02, 2020
|
2.0.35 May 02, 2020
|
||||||
|
|||||||
@ -11,6 +11,7 @@ use Yii;
|
|||||||
use yii\base\Component;
|
use yii\base\Component;
|
||||||
use yii\base\InvalidConfigException;
|
use yii\base\InvalidConfigException;
|
||||||
use yii\base\InvalidValueException;
|
use yii\base\InvalidValueException;
|
||||||
|
use yii\di\Instance;
|
||||||
use yii\rbac\CheckAccessInterface;
|
use yii\rbac\CheckAccessInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -105,7 +106,8 @@ class User extends Component
|
|||||||
*/
|
*/
|
||||||
public $authTimeout;
|
public $authTimeout;
|
||||||
/**
|
/**
|
||||||
* @var CheckAccessInterface The access checker to use for checking access.
|
* @var CheckAccessInterface|string|array The access checker object to use for checking access or the application
|
||||||
|
* component ID of the access checker.
|
||||||
* If not set the application auth manager will be used.
|
* If not set the application auth manager will be used.
|
||||||
* @since 2.0.9
|
* @since 2.0.9
|
||||||
*/
|
*/
|
||||||
@ -165,8 +167,8 @@ class User extends Component
|
|||||||
if ($this->enableAutoLogin && !isset($this->identityCookie['name'])) {
|
if ($this->enableAutoLogin && !isset($this->identityCookie['name'])) {
|
||||||
throw new InvalidConfigException('User::identityCookie must contain the "name" element.');
|
throw new InvalidConfigException('User::identityCookie must contain the "name" element.');
|
||||||
}
|
}
|
||||||
if (!empty($this->accessChecker) && is_string($this->accessChecker)) {
|
if ($this->accessChecker !== null) {
|
||||||
$this->accessChecker = Yii::createObject($this->accessChecker);
|
$this->accessChecker = Instance::ensure($this->accessChecker, '\yii\rbac\CheckAccessInterface');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -352,16 +352,39 @@ class UserTest extends TestCase
|
|||||||
|
|
||||||
public function testAccessChecker()
|
public function testAccessChecker()
|
||||||
{
|
{
|
||||||
$appConfig = [
|
$this->mockWebApplication([
|
||||||
'components' => [
|
'components' => [
|
||||||
'user' => [
|
'user' => [
|
||||||
'identityClass' => UserIdentity::className(),
|
'identityClass' => UserIdentity::className(),
|
||||||
'accessChecker' => AccessChecker::className()
|
'accessChecker' => AccessChecker::className()
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
];
|
]);
|
||||||
|
$this->assertInstanceOf(AccessChecker::className(), Yii::$app->user->accessChecker);
|
||||||
|
|
||||||
$this->mockWebApplication($appConfig);
|
$this->mockWebApplication([
|
||||||
|
'components' => [
|
||||||
|
'user' => [
|
||||||
|
'identityClass' => UserIdentity::className(),
|
||||||
|
'accessChecker' => [
|
||||||
|
'class' => AccessChecker::className(),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
$this->assertInstanceOf(AccessChecker::className(), Yii::$app->user->accessChecker);
|
||||||
|
|
||||||
|
$this->mockWebApplication([
|
||||||
|
'components' => [
|
||||||
|
'user' => [
|
||||||
|
'identityClass' => UserIdentity::className(),
|
||||||
|
'accessChecker' => 'accessChecker',
|
||||||
|
],
|
||||||
|
'accessChecker' => [
|
||||||
|
'class' => AccessChecker::className(),
|
||||||
|
]
|
||||||
|
],
|
||||||
|
]);
|
||||||
$this->assertInstanceOf(AccessChecker::className(), Yii::$app->user->accessChecker);
|
$this->assertInstanceOf(AccessChecker::className(), Yii::$app->user->accessChecker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user