帮我看看这个权限规则怎么弄?

类似google code,用户可以创建项目,然后其他人可以参与到这个项目,创建人可以对项目进行管理,比如在项目里面上传文件。初学者,对sbac里面的bizrule不是很熟悉,不知道怎么写。

三个表 ,user ,project, user-project ,其中第三个表列有[userID],[projectID],[isAdmin]

还有文档里的这句里面的params["post"]是什么东东?

$bizRule=‘return Yii::app()->user->id==$params[“post”]->authID;’;

完了,谢谢!

应该不是一个规则那么简单了。应该是对很多operation的管理(愚见)

$params["post"]表示在创建一个访问规则时,要添加的业务逻辑参数;你只需要传一个$params变量即可;貌似Definite Guide上有吧?

具我的理解 bizrule应该是返回布尔型的PHP代码,至于代码怎么写,就看你的具体需求了

Definite Guide上是有,但还是不清楚。

比如一个创建用户的操作:

如果没有规则,我直接这么写判断:

if (Yii::app ()->user->checkAccess ( ‘UserCreate’ ))

{

}

现在的问题是我怎么传这个$params["post"],或者$params["isadmin"]之类的,我的规则该怎么写?

看看手册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));

好的, 谢谢pangjanne,我再试试,好几天没上网了