diff --git a/framework/rbac/Manager.php b/framework/rbac/Manager.php index 714f1cc29f..614319a66d 100644 --- a/framework/rbac/Manager.php +++ b/framework/rbac/Manager.php @@ -9,6 +9,7 @@ namespace yii\rbac; use Yii; use yii\base\Component; +use yii\base\InvalidConfigException; use yii\base\InvalidParamException; /** @@ -145,16 +146,21 @@ abstract class Manager extends Component * @param string $ruleName name of the rule to be executed. * @param array $params parameters passed to [[Manager::checkAccess()]]. * @param mixed $data additional data associated with the authorization item or assignment. - * @return boolean whether the rule execution returns true. - * If the rule is empty, it will still return true. + * @return boolean whether the rule execution returns true. If `$ruleName` is null, true will be returned. + * @throws InvalidConfigException if `$ruleName` does not correspond to a valid rule. */ public function executeRule($ruleName, $params, $data) { - $rule = $this->getRule($ruleName); - if ($rule) { - return $rule->execute($params, $data); + if ($ruleName !== null) { + $rule = $this->getRule($ruleName); + if ($rule instanceof Rule) { + return $rule->execute($params, $data); + } else { + throw new InvalidConfigException("Rule not found: $ruleName"); + } + } else { + return true; } - return true; } /**