Skip to content

Commit 89059b1

Browse files
committed
Update m140611_133903_init_rbac.php
1 parent 45a0c67 commit 89059b1

1 file changed

Lines changed: 62 additions & 36 deletions

File tree

migrations/m140611_133903_init_rbac.php

Lines changed: 62 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,44 +11,70 @@ public function up()
1111
if ($this->db->driverName === 'mysql') {
1212
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
1313
}
14+
15+
16+
// Check if auth_rule_table Table exist
17+
$auth_rule_table_name = \Yii::$app->getModule('user-management')->auth_rule_table;
18+
if (\Yii::$app->db->schema->getTableSchema($auth_rule_table_name) === null)
19+
{
20+
// Create auth_rule_table table
21+
$this->createTable($auth_rule_table_name, [
22+
'name' => Schema::TYPE_STRING . '(64) NOT NULL',
23+
'data' => Schema::TYPE_TEXT,
24+
'created_at' => Schema::TYPE_INTEGER,
25+
'updated_at' => Schema::TYPE_INTEGER,
26+
'PRIMARY KEY (name)',
27+
], $tableOptions);
28+
}
29+
30+
// Check if auth_item_table Table exist
31+
$auth_item_table_name = \Yii::$app->getModule('user-management')->auth_item_table;
32+
if (\Yii::$app->db->schema->getTableSchema($auth_item_table_name) === null)
33+
{
34+
// Create auth_rule_table table
35+
$this->createTable($auth_item_table_name, [
36+
'name' => Schema::TYPE_STRING . '(64) NOT NULL',
37+
'type' => Schema::TYPE_INTEGER . ' NOT NULL',
38+
'description' => Schema::TYPE_TEXT,
39+
'rule_name' => Schema::TYPE_STRING . '(64)',
40+
'data' => Schema::TYPE_TEXT,
41+
'created_at' => Schema::TYPE_INTEGER,
42+
'updated_at' => Schema::TYPE_INTEGER,
43+
'PRIMARY KEY (name)',
44+
'FOREIGN KEY (rule_name) REFERENCES ' . Yii::$app->getModule('user-management')->auth_rule_table . ' (name) ON DELETE SET NULL ON UPDATE CASCADE',
45+
], $tableOptions);
46+
47+
$this->createIndex('idx-auth_item-type', Yii::$app->getModule('user-management')->auth_item_table, 'type');
48+
}
1449

15-
$this->createTable(Yii::$app->getModule('user-management')->auth_rule_table, [
16-
'name' => Schema::TYPE_STRING . '(64) NOT NULL',
17-
'data' => Schema::TYPE_TEXT,
18-
'created_at' => Schema::TYPE_INTEGER,
19-
'updated_at' => Schema::TYPE_INTEGER,
20-
'PRIMARY KEY (name)',
21-
], $tableOptions);
50+
// Check if auth_item_child_table Table exist
51+
$auth_item_child_table_name = \Yii::$app->getModule('user-management')->auth_item_child_table;
52+
if (\Yii::$app->db->schema->getTableSchema($auth_item_child_table_name) === null)
53+
{
54+
// Create auth_item_child_table table
55+
$this->createTable($auth_item_child_table_name, [
56+
'parent' => Schema::TYPE_STRING . '(64) NOT NULL',
57+
'child' => Schema::TYPE_STRING . '(64) NOT NULL',
58+
'PRIMARY KEY (parent, child)',
59+
'FOREIGN KEY (parent) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
60+
'FOREIGN KEY (child) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
61+
], $tableOptions);
62+
}
2263

23-
$this->createTable(Yii::$app->getModule('user-management')->auth_item_table, [
24-
'name' => Schema::TYPE_STRING . '(64) NOT NULL',
25-
'type' => Schema::TYPE_INTEGER . ' NOT NULL',
26-
'description' => Schema::TYPE_TEXT,
27-
'rule_name' => Schema::TYPE_STRING . '(64)',
28-
'data' => Schema::TYPE_TEXT,
29-
'created_at' => Schema::TYPE_INTEGER,
30-
'updated_at' => Schema::TYPE_INTEGER,
31-
'PRIMARY KEY (name)',
32-
'FOREIGN KEY (rule_name) REFERENCES ' . Yii::$app->getModule('user-management')->auth_rule_table . ' (name) ON DELETE SET NULL ON UPDATE CASCADE',
33-
], $tableOptions);
34-
$this->createIndex('idx-auth_item-type', Yii::$app->getModule('user-management')->auth_item_table, 'type');
35-
36-
$this->createTable(Yii::$app->getModule('user-management')->auth_item_child_table, [
37-
'parent' => Schema::TYPE_STRING . '(64) NOT NULL',
38-
'child' => Schema::TYPE_STRING . '(64) NOT NULL',
39-
'PRIMARY KEY (parent, child)',
40-
'FOREIGN KEY (parent) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
41-
'FOREIGN KEY (child) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
42-
], $tableOptions);
43-
44-
$this->createTable(Yii::$app->getModule('user-management')->auth_assignment_table, [
45-
'item_name' => Schema::TYPE_STRING . '(64) NOT NULL',
46-
'user_id' => Schema::TYPE_INTEGER . ' NOT NULL',
47-
'created_at' => Schema::TYPE_INTEGER,
48-
'PRIMARY KEY (item_name, user_id)',
49-
'FOREIGN KEY (item_name) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
50-
'FOREIGN KEY (user_id) REFERENCES '.Yii::$app->getModule('user-management')->user_table.' (id) ON DELETE CASCADE ON UPDATE CASCADE',
51-
], $tableOptions);
64+
// Check if auth_assignment_table Table exist
65+
$auth_assignment_table_name = \Yii::$app->getModule('user-management')->auth_assignment_table;
66+
if (\Yii::$app->db->schema->getTableSchema($auth_assignment_table_name) === null)
67+
{
68+
// Create auth_assignment_table table
69+
$this->createTable($auth_assignment_table_name, [
70+
'item_name' => Schema::TYPE_STRING . '(64) NOT NULL',
71+
'user_id' => Schema::TYPE_INTEGER . ' NOT NULL',
72+
'created_at' => Schema::TYPE_INTEGER,
73+
'PRIMARY KEY (item_name, user_id)',
74+
'FOREIGN KEY (item_name) REFERENCES ' . Yii::$app->getModule('user-management')->auth_item_table . ' (name) ON DELETE CASCADE ON UPDATE CASCADE',
75+
'FOREIGN KEY (user_id) REFERENCES '.Yii::$app->getModule('user-management')->user_table.' (id) ON DELETE CASCADE ON UPDATE CASCADE',
76+
], $tableOptions);
77+
}
5278
}
5379

5480
public function down()

0 commit comments

Comments
 (0)