我正在尝试验证属于公司的用户是否可以查看属于公司的项目......换句话说,如果他们是员工,他们应该能够查看公司的项目。
我正在尝试遵循此处提供的示例: http ://www.yiiframework.com/doc/guide/1.1/en/topics.auth
这是我生成的代码(运行一次):
$auth=Yii::app()->authManager;
$auth->createOperation('viewItem','view an item');
$bizRule = 'return User::model()->findByPk(Yii::app()->user->getId())->company->id==$params["item"]->company->id';
$task=$auth->createTask('companyOwnedItem','view a company-owned item',$bizRule);
$task->addChild('viewItem');
这是 main.php 中的代码:
'authManager'=>array(
'class'=>'CDbAuthManager',
'connectionID'=>'db',
这是我的控制器中使用的授权部分:
if (Yii::app()->user->checkAccess('companyOwnedItem',array('item'=>$item))) {
echo 'YES';
} else echo 'NO';
我总是在屏幕上得到“不”。
但是,如果我使用此代码:
if (User::model()->findByPk(Yii::app()->user->getId())->company->id==$item->company->id)
然后我在屏幕上看到“是”。我做错了什么,如何使用 Yii 的内置 authManager 使其工作?