我在yii项目中使用yii用户模块进行用户身份验证/授权。它提供了处理超级用户的方法。我特别使用函数isAdmin():
public static function isAdmin() {
if(Yii::app()->user->isGuest)
return false;
...
}
在我的项目中,我有House实体,还有一种新类型的用户:HouseAdmins(以及DB中相应的House和House_admin表)。所以我有三种类型的用户:
- 家庭成员:有登录名/密码的用户,但不是超级用户
- 众议院行政人员:统治特定众议院的众议院成员
- superusers:yii用户模块处理这些超级用户(isAdmin()返回true)
我需要的是创建另一个方法(希望基于isAdmin()),如果用户是某个特定房子的houseAdmin,该方法将返回true。该函数类似于:"如果是表house_admin
中值为user_id=current_user; house_id=Y
的元组,则返回true"
我怎么能这么做?
不确定DB列的确切名称,但您可以尝试以下操作:
public function isHouseAdminOf($house_id)
{
$cur_user_id = Yii::app()->user->id;
$any = HouseAdmin::model()->findByAttributes(array(
'house_id'=>$house_id,
'user_id'=>$cur_user_id
));
if(isset($any))
return true;
return false;
}