bluefinger
(Wang Zheng)
1
类似google code,用户可以创建项目,然后其他人可以参与到这个项目,创建人可以对项目进行管理,比如在项目里面上传文件。初学者,对sbac里面的bizrule不是很熟悉,不知道怎么写。
三个表 ,user ,project, user-project ,其中第三个表列有[userID],[projectID],[isAdmin]
还有文档里的这句里面的params["post"]是什么东东?
$bizRule=‘return Yii::app()->user->id==$params[“post”]->authID;’;
完了,谢谢!
pangjanne
(Pngjanne)
2
应该不是一个规则那么简单了。应该是对很多operation的管理(愚见)
$params["post"]表示在创建一个访问规则时,要添加的业务逻辑参数;你只需要传一个$params变量即可;貌似Definite Guide上有吧?
terry39
(Gamezoom)
3
具我的理解 bizrule应该是返回布尔型的PHP代码,至于代码怎么写,就看你的具体需求了
bluefinger
(Wang Zheng)
4
Definite Guide上是有,但还是不清楚。
比如一个创建用户的操作:
如果没有规则,我直接这么写判断:
if (Yii::app ()->user->checkAccess ( ‘UserCreate’ ))
{
…
}
现在的问题是我怎么传这个$params["post"],或者$params["isadmin"]之类的,我的规则该怎么写?
pangjanne
(Pngjanne)
5
看看手册API上:checkAccess(string $operation, array $params=array ( ), boolean $allowCaching=true)
eg:
创建authitem时
$bizRule = 'return $params["isadmin"]'; // return boolean
$atuhManager->createOperation('UserCreate', 'create a user by admin', $bizRule);
//ok 它会存到authitem中
执行权限检查:
$params["isadmin"] = true or false; // it must be a boolean in there;
Yii::app ()->user->checkAccess ( 'UserCreate', $params["isadmin"]);
你可以看看CDb/PhpAuthmanager中的checkAccess()方法和CAuthManager中的executeBizRule方法(eval($bizRule));
bluefinger
(Wang Zheng)
6
好的, 谢谢pangjanne,我再试试,好几天没上网了