Пример #1
0
 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
 }
Пример #2
0
 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;
 }
Пример #3
0
 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;
 }
Пример #5
0
 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);
         }
     }
 }