/** * Add or remove child permissions (including routes) and return back to view * * @param string $id * * @return \yii\web\Response */ public function actionSetChildPermissions($id) { $role = $this->findModel($id); $newChildPermissions = Yii::$app->request->post('child_permissions', []); $oldChildPermissions = array_keys((new DbManager())->getPermissionsByRole($role->name)); $toRemove = array_diff($oldChildPermissions, $newChildPermissions); $toAdd = array_diff($newChildPermissions, $oldChildPermissions); Role::addChildren($role->name, $toAdd); Role::removeChildren($role->name, $toRemove); Yii::$app->session->setFlash('crudMessage', Yii::t('yii', 'Saved')); return $this->redirect(['view', 'id' => $id]); }