From 381aea4f2b48b2e9193a1ebe54778349c7f224ab Mon Sep 17 00:00:00 2001 From: rocho Date: Sat, 19 Sep 2015 21:25:41 +0200 Subject: [PATCH] add rbac roles, and and admin role to admin user --- common/config/main.php | 12 +++ .../migrations/m140506_102106_rbac_init.php | 92 +++++++++++++++++++ .../m150919_181709_add_basic_roles.php | 44 +++++++++ ...2054_add__admin__role__to__admin__user.php | 34 +++++++ 4 files changed, 182 insertions(+) create mode 100644 console/migrations/m140506_102106_rbac_init.php create mode 100644 console/migrations/m150919_181709_add_basic_roles.php create mode 100644 console/migrations/m150919_192054_add__admin__role__to__admin__user.php diff --git a/common/config/main.php b/common/config/main.php index be6a945..cc2b8b8 100644 --- a/common/config/main.php +++ b/common/config/main.php @@ -15,5 +15,17 @@ return [ ], ], ], + 'formatter' => [ + 'class' => 'yii\i18n\Formatter', + 'dateFormat' => 'yyyy.MM.dd', + 'datetimeFormat' => 'yyyy.MM.dd HH:mm', + 'locale' => 'hu-Hu', + 'timeZone' => 'UTC', + 'defaultTimeZone' => 'UTC' , + 'nullDisplay' => "-", + ], + 'authManager' => [ + 'class' => 'yii\rbac\DbManager' + ], ], ]; diff --git a/console/migrations/m140506_102106_rbac_init.php b/console/migrations/m140506_102106_rbac_init.php new file mode 100644 index 0000000..cc92edc --- /dev/null +++ b/console/migrations/m140506_102106_rbac_init.php @@ -0,0 +1,92 @@ + + * @since 2.0 + */ +class m140506_102106_rbac_init extends \yii\db\Migration +{ + /** + * @throws yii\base\InvalidConfigException + * @return DbManager + */ + protected function getAuthManager() + { + $authManager = Yii::$app->getAuthManager(); + if (!$authManager instanceof DbManager) { + throw new InvalidConfigException('You should configure "authManager" component to use database before executing this migration.'); + } + return $authManager; + } + + public function up() + { + $authManager = $this->getAuthManager(); + $this->db = $authManager->db; + + $tableOptions = null; + if ($this->db->driverName === 'mysql') { + // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci + $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; + } + + $this->createTable($authManager->ruleTable, [ + 'name' => $this->string(64)->notNull(), + 'data' => $this->text(), + 'created_at' => $this->integer(), + 'updated_at' => $this->integer(), + 'PRIMARY KEY (name)', + ], $tableOptions); + + $this->createTable($authManager->itemTable, [ + 'name' => $this->string(64)->notNull(), + 'type' => $this->integer()->notNull(), + 'description' => $this->text(), + 'rule_name' => $this->string(64), + 'data' => $this->text(), + 'created_at' => $this->integer(), + 'updated_at' => $this->integer(), + 'PRIMARY KEY (name)', + 'FOREIGN KEY (rule_name) REFERENCES ' . $authManager->ruleTable . ' (name) ON DELETE SET NULL ON UPDATE CASCADE', + ], $tableOptions); + $this->createIndex('idx-auth_item-type', $authManager->itemTable, 'type'); + + $this->createTable($authManager->itemChildTable, [ + 'parent' => $this->string(64)->notNull(), + 'child' => $this->string(64)->notNull(), + 'PRIMARY KEY (parent, child)', + 'FOREIGN KEY (parent) REFERENCES ' . $authManager->itemTable . ' (name) ON DELETE CASCADE ON UPDATE CASCADE', + 'FOREIGN KEY (child) REFERENCES ' . $authManager->itemTable . ' (name) ON DELETE CASCADE ON UPDATE CASCADE', + ], $tableOptions); + + $this->createTable($authManager->assignmentTable, [ + 'item_name' => $this->string(64)->notNull(), + 'user_id' => $this->string(64)->notNull(), + 'created_at' => $this->integer(), + 'PRIMARY KEY (item_name, user_id)', + 'FOREIGN KEY (item_name) REFERENCES ' . $authManager->itemTable . ' (name) ON DELETE CASCADE ON UPDATE CASCADE', + ], $tableOptions); + } + + public function down() + { + $authManager = $this->getAuthManager(); + $this->db = $authManager->db; + + $this->dropTable($authManager->assignmentTable); + $this->dropTable($authManager->itemChildTable); + $this->dropTable($authManager->itemTable); + $this->dropTable($authManager->ruleTable); + } +} diff --git a/console/migrations/m150919_181709_add_basic_roles.php b/console/migrations/m150919_181709_add_basic_roles.php new file mode 100644 index 0000000..79e7565 --- /dev/null +++ b/console/migrations/m150919_181709_add_basic_roles.php @@ -0,0 +1,44 @@ +authManager->createRole('developer'); + Yii::$app->authManager->add($role); + + $role = Yii::$app->authManager->createRole('admin'); + Yii::$app->authManager->add($role); + + + $role = Yii::$app->authManager->createRole('group_admin'); + Yii::$app->authManager->add($role); + + $role = Yii::$app->authManager->createRole('shop_admin'); + Yii::$app->authManager->add($role); + + $role = Yii::$app->authManager->createRole('receptionist'); + Yii::$app->authManager->add($role); + } + + public function down() + { + echo "m150919_181709_add_basic_roles cannot be reverted.\n"; + + return false; + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/console/migrations/m150919_192054_add__admin__role__to__admin__user.php b/console/migrations/m150919_192054_add__admin__role__to__admin__user.php new file mode 100644 index 0000000..afcc64d --- /dev/null +++ b/console/migrations/m150919_192054_add__admin__role__to__admin__user.php @@ -0,0 +1,34 @@ +authManager; + $user = User::find()->where('username = :name',[':name' => 'admin'])->one(); + $role = $am->getRole('admin'); + Yii::$app->authManager->assign($role, $user->id); + } + + public function down() + { + echo "m150919_192054_add__admin__role__to__admin__user cannot be reverted.\n"; + + return false; + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +}