/** * @throws \yii\base\InvalidConfigException * @throws \yii\db\Exception */ public function actionUpdate() { $assignments = $this->getAllAssignments(); $useTransaction = $this->authManager instanceof \yii\rbac\DbManager && $this->useTransaction === true; $transaction = null; if ($useTransaction) { $transaction = $this->db->beginTransaction(); } try { $this->authManager->removeAll(); $this->updateRules(); $this->updateRoles(); $this->updatePermission(); $this->updateInheritanceRoles(); $this->updateInheritancePermissions(); if (!empty($assignments)) { $this->restoreAssignments($assignments); } if ($transaction !== null) { $transaction->commit(); } } catch (\Exception $e) { $this->stderr($e->getMessage() . PHP_EOL); if ($transaction !== null) { $transaction->rollBack(); } } if ($this->authManager instanceof \yii\rbac\DbManager) { $this->authManager->invalidateCache(); } }