/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = AuthAssignment::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['created_at' => $this->created_at]); $query->andFilterWhere(['like', 'item_name', $this->item_name])->andFilterWhere(['like', 'user_id', $this->user_id]); return $dataProvider; }
public function setAuthAssignment($role, $id) { if (!empty($role) && !empty($id)) { $authAssign = AuthAssignment::find()->where(['user_id' => $id])->one(); if ($authAssign !== null) { $authAssign->item_name = $role; $authAssign->user_id = $id; return $authAssign->save(false); } else { $authAssign = new AuthAssignment(); $authAssign->item_name = $role; $authAssign->user_id = $id; return $authAssign->save(false); } } else { return false; } }
/** * Retorna permissões cadastradas * @return null|string */ public function getPermissoes() { if (is_null($this->cachePermissoes)) { $obj = AuthAssignment::find()->where(['user_id' => $this->id])->all(); if (!is_null($obj)) { if (count($obj) > 0) { $authitem = new AuthItem(); $this->cachePermissoes = $obj; $aux = array(); foreach ($obj as $p) { array_push($aux, $authitem->getDescriptionByName($p->item_name)->description); } return join(', ', $aux); } else { return "Não há permissões cadastradas"; } } else { return null; } } else { return $this->cachePermissoes; } }
/** * Update an existing User model. If update is successful, the browser * will be redirected to the 'view' page. * @param string $id * @return mixed */ public function actionUpdate($id) { if ((Yii::$app->user->can("update-user") || Yii::$app->user->can("user")) && $id != 1) { $permissoes = AuthItem::getListToDropDownList(); // set up user and profile $user = $this->findModel($id); $user->setScenario("admin"); $profile = $user->profile; $mensagem = ""; //Informa ao usuário mensagens de erro na view //Permissão do usuário $authAssignment = new AuthAssignment(); $authItensUser = AuthAssignment::find()->where(['user_id' => $id])->all(); $permissoesUser = []; foreach ($authItensUser as $aiu) { array_push($permissoesUser, $aiu->item_name); } //Recebe as permissões salvas do usuário $authAssignment->item_name = $permissoesUser; // load post data and validate $post = Yii::$app->request->post(); if ($user->load($post) && $user->validate() && $profile->load($post) && $profile->validate()) { //Inicia a transação: $transaction = \Yii::$app->db->beginTransaction(); try { $itensInseridos = true; if (isset($post['AuthAssignment']['item_name']) && !empty($post['AuthAssignment']['item_name'])) { Yii::$app->db->createCommand("DELETE from auth_assignment WHERE \n user_id = :iduser ", [':iduser' => $user->id])->execute(); $roles = $post['AuthAssignment']['item_name']; foreach ($roles as $role) { $user->alterarPermissoes($role, $user->id); } } else { Yii::$app->db->createCommand("DELETE from auth_assignment WHERE \n user_id = :iduser ", [':iduser' => $user->id])->execute(); } if (!$user->save()) { $mensagem = "Não foi possível salvar os dados"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; } if (!$profile->setUser($user->id)->save()) { $mensagem = "Não foi possível salvar os dados"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; } if ($itensInseridos) { $transaction->commit(); return $this->redirect(['view', 'id' => $user->id]); } } catch (\Exception $exception) { $transaction->rollBack(); $mensagem = "Ocorreu uma falha inesperada ao tentar salvar"; } } // render return $this->render('update', compact('user', 'profile', 'permissoes', 'permissoesUser', 'mensagem', 'authAssignment')); } else { throw new ForbiddenHttpException("Acesso negado!"); } }
public function sendMailToAdmin($news, $subject) { $roles = \app\models\AuthAssignment::find()->where(['item_name' => 'admin'])->with('user')->all(); if (!empty($roles)) { foreach ($roles as $role) { $emails[] = $role->user->email; } $body = sprintf('%s <br /> Ссылка на новость - %s', $subject['admin'], $this->urlToNews($news->id)); $this->sendMail($emails, $subject['admin'], $body); } }