Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 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;
     }
 }
Ejemplo n.º 3
0
 /**
  * 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;
     }
 }
Ejemplo n.º 4
0
 /**
  * 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!");
     }
 }
Ejemplo n.º 5
0
 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);
     }
 }