/**
* @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();
}
}