Closed travacry closed 6 years ago
You are supposed to make this decision by yourself if needed See: https://www.yiiframework.ru/forum/viewtopic.php?t=30805 https://github.com/yiisoft/yii2/issues/5435
And don't forget that assignments are cached during page run and expected to be revoked by $auth->revoke...
user_id maybe email, ok.
ru : Согласен, что является id в user должен решать сам разработчик, но если есть указание на id, а user_id подразумевает это (1.таблица = user, 2.id), связь должна идти на id, а условие связи - идентичные типы пока никто не отменял.
Да и так по факту есть (связь по умолчанию на user
(id
)), непонятно только почему varchar(64), а не int(11).
Почему используется это механизм :
$this->createTable($authManager->assignmentTable, [
'item_name' => Schema::TYPE_STRING . '(64) NOT NULL',
'user_id' => Schema::TYPE_STRING . '(64) NOT NULL',
'created_at' => Schema::TYPE_INTEGER,
'PRIMARY KEY (item_name, user_id)',
'FOREIGN KEY (item_name) REFERENCES ' . $authManager->itemTable . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
], $tableOptions);
а не выборка типа через схему реального типа.
Потому что id в RBAC !== ID из user. Это может быть что угодно, в том числе и строка.
Error ?, rbac, can't create fk -> auth_assignment.user_id -> varchar(64) -> user.id -> int(11) => varchar(64) != int(11)
yiisoft/yii2-app-advanced yiisoft/yii2": "~2.0.6
Вообщем странно, посмотрите, может стоит добавить миграцию :
$this->alterColumn('auth_assignment', 'user_id', 'int(11)'); $this->addForeignKey( 'fk-auth_assignment-user', 'auth_assignment', 'user_id', 'user', 'id' );