Yii dan Bizrules di CDbAuthManager

Saya benar-benar bingung dengan bizrules dan autitem Yii secara umum. Saat ini saya terjebak dalam cara mengimplementasikan yang berikut ini. Saya memiliki beberapa contoh model Team, ini memiliki beberapa contoh model User yang ditetapkan. Sekarang saya ingin mengotorisasi beberapa pengguna yang ditugaskan sebagai team admin (AuthItem).

Menyimpannya di AuthAssignment sepertinya merupakan cara paling logis untuk menyimpannya bagi saya, karena saya hanya ingin menetapkan AuthItem ke pengguna. Saya juga bisa menyimpan data ke tugas, jadi saya juga bisa menyimpan team_id dengan tugas tersebut. Tapi ini nampaknya sangat tidak efisien di Yii, karena (sejauh yang saya tahu) harus menyimpan bizrule untuk setiap tugas seperti: return $data['team_id'] === $params['team_id'];.

Apakah ada sesuatu yang saya lewatkan? Atau haruskah saya pergi dan menyimpan tugas di luar AuthAssignment dan menyimpannya di tabel khusus saya?


person Ambidex    schedule 09.05.2014    source sumber


Jawaban (1)


Anda dapat menggunakan peran default seperti yang dijelaskan dalam panduan: http://www.yiiframework.com/doc/guide/1.1/en/topics.auth

return array(
    'components'=>array(
        'authManager'=>array(
            'class'=>'CDbAuthManager',
            'defaultRoles'=>array('team_admin'),
        ),
    ),
);

Sekarang peran team_admin akan ditetapkan ke setiap pengguna tanpa menugaskannya ke setiap orang secara individual, namun Anda dapat membatasinya dengan aturan bizrule:

$bizRule="return {$data['team_id']} === {$params['team_id']};";
$auth->createRole('team_admin', 'Team admin', $bizRule);
person mcserep    schedule 10.11.2014