0

CDbAuthManagerwebapp に RBAC を実装するためにネイティブを使用しています。役割を実行する権限を持つすべてのユーザーを取得するにはどうすればよいですか? という名前の役割があるとしupdateprofileます。そのロールに割り当てられているすべてのユーザーを取得したい。ドキュメントを検索しましたが、機能が見つかりませんでした。

(すべてのユーザー モデルを反復処理しcheckAccess()foreachループ内で実行できることはわかっていますが、より適切なソリューションを好みます)

4

3 に答える 3

2

これを行うために私が見つけた最も簡単な方法は、auth_assignmentテーブルにマップするAuthAssignmentモデルを作成することです。次に、関係やスコープなどを設定し、それを使用してクエリを実行して、すべてのユーザーモデルを取得できます。auth_assignmentテーブルについては特に特別なことは何もありません(主にそこにある役割にすぎないため)。

于 2013-02-08T00:46:07.370 に答える
2

コードのような

class AuthAssginment extends CActiveRecord{.....
    public function getUsersBaseOnRole($role) {
         return Yii::app()->db->createCommand()
                    ->select('userid')
                    ->from($this->tableName())
                    ->where('itemname=:role', array(
                        ':role' => $role,))
                    ->queryAll() ;


}....
于 2013-10-19T11:48:12.763 に答える
1

役割は階層的である可能性があり、直接クエリや関係を使用できないため、他の返信では完璧な結果が得られないと思います。うまく機能する私の解決策は次のとおりです。

// list all users with 'userManagement' role
if($users = Users::model()->findAll()) {
    foreach($users as $id => $user) {
        if(!$user->checkAccess('userManagement')) {
            unset($users[$id]);
        }
    }
    $users = array_values($users); // to reset indices (optional)
}
于 2015-02-11T08:51:23.760 に答える