[英]Cannot create custom rule for dbManager in Yii2
我正在嘗試為我的 Yii2 應用程序創建自定義規則,但是在運行遷移時出現了某種問題。 這是我的遷移的樣子:
$manager = $auth->createRole('manager');
$auth->add($manager);
//Allow manager to create work items for own employees.
$manager_rule = new ManagerRule();
$auth->add($manager_rule);
$create_employee_work_item = $auth->createPermission('create_employee_work_item');
$create_employee_work_item->description = 'Create employee work item';
$create_employee_work_item->ruleName = $manager_rule->name;
$auth->add($create_employee_work_item);
$auth->addChild($manager, $create_employee_work_item);
來自 ManagerRule class 的代碼:
namespace app\rbac;
use yii\rbac\Rule;
class ManagerRule extends Rule
{
public $name = 'isManagerOf';
public function execute($user, $item, $params)
{
return isset($params['user']) ? $params['user']->manager_id === $user : false;
}
}
這發生在這里$auth->add($create_employee_work_item);
然后我注意到我的 auth_rule 表中有一些奇怪的東西。
我相信數據列的十六進制會產生問題,我不確定數據是否應該以十六進制格式存儲在那里。 任何想法如何解決它?
我使用 MSSQL 作為我的數據庫。
問題出在初始 RBAC 遷移文件m140506_102106_rbac_init.php
我發現 auth_item.data 列類型是二進制的:
$this->createTable($authManager->ruleTable, [
'name' => $this->string(64)->notNull(),
'data' => $this->binary(),
'created_at' => $this->integer(),
'updated_at' => $this->integer(),
'PRIMARY KEY ([[name]])',
], $tableOptions);
所以我把它改成文字:
'data' => $this->text(),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.