public function afterSave($insert, $changedAttributes) { //$oldCategorias = array("0"=>1); $actualItens = []; if (($actualItens = AuthItemChild::find()->andWhere("parent = '{$this->name}'")->asArray()->all()) !== null) { $actualItens = ArrayHelper::getColumn($actualItens, 'child'); } //verifica se é um array $this->itemIds = is_array($this->itemIds) ? $this->itemIds : [$this->itemIds]; $inserirItens = array_diff($this->itemIds, $actualItens); if (!empty($inserirItens)) { //save the relations foreach ($inserirItens as $id) { $r = new AuthItemChild(); $r->parent = $this->name; $r->child = $id; $r->save(); } } $delItens = array_diff($actualItens, $this->itemIds); if (!empty($delItens)) { foreach ($delItens as $remove) { $r = AuthItemChild::findOne(['child' => $remove, 'parent' => $this->name]); $r->delete(); } } parent::afterSave($insert, $changedAttributes); //don't forget this }
public function search($params) { $query = AuthItemChild::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(['like', 'parent', $this->parent])->andFilterWhere(['like', 'child', $this->child]); return $dataProvider; }
public static function getRolesByPermission($permission) { $role = ['']; $roles = AuthItemChild::find()->where(['child' => $permission])->all(); if ($roles) { foreach ($roles as $r) { $role[] = $r->child; } } return $role; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = AuthItemChild::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['like', 'parent', $this->parent])->andFilterWhere(['like', 'child', $this->child]); return $dataProvider; }
public function actionInit() { $auth = \Yii::$app->authManager; $auth->removeAll(); //$arrPerm = []; $query = AuthItem::find()->where(['type' => 0]); $modelAuthItem = $query->all(); foreach ($modelAuthItem as $obj) { $arrPerm[$obj->name] = $obj->description; } //$arrRole = []; $query = AuthItem::find()->where(['type' => 2]); $modelAuthItem = $query->all(); foreach ($modelAuthItem as $obj) { $arrRole[$obj->name] = $obj->description; } $query = AuthItem::find()->where(['type' => 2]); $modelAuthItem = $query->all(); //$arrRolePerm = []; foreach ($modelAuthItem as $obj) { $name = $obj->name; $query = AuthItemChild::find()->where(['parent' => $name]); $modelAuthItemChild = $query->all(); foreach ($modelAuthItemChild as $objchild) { $arrRolePerm[$name][] = $objchild->child; } } $auth->removeAll(); foreach ($arrPerm as $permName => $title) { $perm = $auth->createPermission($permName); $perm->description = $title; $auth->add($perm); } foreach ($arrRole as $roleName => $title) { $role = $auth->createRole($roleName); $role->description = $title; $auth->add($role); // assign role permission foreach ($arrRolePerm[$roleName] as $permName) { $perm = $auth->getPermission($permName); $auth->addChild($role, $perm); } } }