Yii และ Bizrules ใน CDbAuthManager

ฉันสับสนมากกับกฎเกณฑ์และความน่าเชื่อถือโดยทั่วไปของ Yii ในขณะนี้ ฉันติดอยู่กับวิธีใช้งานสิ่งต่อไปนี้ ฉันมีอินสแตนซ์โมเดล Team หลายอินสแตนซ์ ซึ่งได้รับมอบหมายอินสแตนซ์โมเดล User หลายรายการ ตอนนี้ฉันต้องการอนุญาตผู้ใช้ที่ได้รับมอบหมายหลายรายเป็น team admin (AuthItem)

การจัดเก็บมันใน AuthAssignment ดูเหมือนจะเป็นวิธีที่สมเหตุสมผลที่สุดในการจัดเก็บมันให้กับฉัน เนื่องจากฉันเพียงต้องการกำหนด AuthItem ให้กับผู้ใช้ ฉันยังสามารถจัดเก็บข้อมูลในการมอบหมายงานได้ ดังนั้นฉันจะสามารถจัดเก็บ team_id ไว้พร้อมกับการมอบหมายงานได้เช่นกัน แต่ดูเหมือนว่าจะไม่มีประสิทธิภาพเลยใน Yii เนื่องจาก (เท่าที่ฉันบอกได้) จะต้องจัดเก็บ bizrule ให้กับทุก ๆ การมอบหมายเช่น: return $data['team_id'] === $params['team_id'];

มีบางอย่างที่ฉันขาดหายไปหรือไม่? หรือฉันควรไปจัดเก็บการมอบหมายไว้ภายนอก AuthAssignment และเก็บไว้ในตารางที่กำหนดเองของฉัน


person Ambidex    schedule 09.05.2014    source แหล่งที่มา


คำตอบ (1)


คุณสามารถใช้บทบาทเริ่มต้นตามที่อธิบายไว้ในคำแนะนำ: http://www.yiiframework.com/doc/guide/1.1/en/topics.auth

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

ตอนนี้ บทบาท team_admin จะถูกมอบหมายให้กับผู้ใช้ทุกคนโดยไม่ต้องมอบหมายให้กับทุกคนเป็นรายบุคคล อย่างไรก็ตาม คุณสามารถจำกัดบทบาทได้โดยใช้ bizrule:

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