Yii用户类型与'admin'不同

时间:2013-11-29 21:02:54

标签: php yii yii-extensions

使用gii为实体创建CRUD,它在每个控制器中创建一个accessRules()函数,如下所示:

public function accessRules()
{
    return array(
        array('allow',
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),
        array('allow', 
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

这基本上告诉Yii允许经过身份验证的用户执行“创建”和“更新”操作,并允许管理员用户执行“管理员”和“删除”动作。

在我的应用程序中,还有另一种类型的用户, HouseAdmin 用户,在简单的经过身份验证的用户和超级用户之间具有不同的角色。

在这里的帮助下,我创建了一个isHouseAdmin()函数,告诉用户是否属于HouseAdmin类型。现在,我需要使用该信息使accessRules()与'houseAdmin'用户一起使用,因此我可以制定如下规则:

public function accessRules()
{
    return array(
    array('allow',
        'actions'=>array('index','view'),
        'users'=>array('@'),
        ),
        array('allow',
            'actions'=>array('create','update'),
            'users'=>array('houseAdmin'),
        ),
        array('allow', 
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

我怎么能这样做? 那些'admin'和'@'定义在哪里,所以我可以添加'houseAdmin'?

1 个答案:

答案 0 :(得分:0)

admin houseAdmin 是角色的名称。因此,应使用关键角色指定,但不应指定用户

array('allow',
    'actions' => array('create','update'),
    'roles' => array('houseAdmin'),
),

阅读this了解详情。