/** * Specifies the access control rules. * This method is used by the 'accessControl' filter. * @return array access control rules */ public function accessRules() { return array(array('allow', 'actions' => array('update', 'delete'), 'expression' => function () { // Se for admin já retorna permissão de acesso if (Sipesq::isAdmin() || Sipesq::isSupport()) { return true; } $projeto = ProjetoOrcamento::model()->findByPk($_GET['id'])->cod_projeto; $pessoa = Yii::app()->user->getId(); //Verifica se atua no projeto if (ProjetoPessoaAtuante::model()->count('cod_projeto = :proj AND cod_pessoa = :id', array('id' => $pessoa, 'proj' => $projeto)) > 0) { return true; } //verifica se é um dos coordenadores if (Projeto::model()->count('cod_projeto = :proj AND (cod_professor = :id OR cod_grad = :id OR cod_pos_grad = :id)', array('id' => $pessoa, 'proj' => $projeto))) { return true; } //verifica se alguem delegou uma permissão a este usuário if (PermissaoProjeto::model()->count('cod_projeto = :projeto AND cod_pessoa = :id', array('id' => $pessoa, 'projeto' => $projeto))) { return true; } //o usuário não é permitido return false; }), array('allow', 'actions' => array('create'), 'expression' => function () { // Se for admin já retorna permissão de acesso if (Sipesq::isAdmin() || Sipesq::isSupport()) { return true; } $projeto = $_GET['id']; $pessoa = Yii::app()->user->getId(); //Verifica se atua no projeto if (ProjetoPessoaAtuante::model()->count('cod_projeto = :proj AND cod_pessoa = :id', array('id' => $pessoa, 'proj' => $projeto)) > 0) { return true; } //verifica se é um dos coordenadores if (Projeto::model()->count('cod_projeto = :proj AND (cod_professor = :id OR cod_grad = :id OR cod_pos_grad = :id)', array('id' => $pessoa, 'proj' => $projeto))) { return true; } //verifica se alguem delegou uma permissão a este usuário if (PermissaoProjeto::model()->count('cod_projeto = :projeto AND cod_pessoa = :id', array('id' => $pessoa, 'projeto' => $projeto))) { return true; } //o usuário não é permitido return false; }), array('allow', 'actions' => array('create'), 'expression' => function () { return Sipesq::isSupport() || Sipesq::getPermition('projeto.financeiro') >= 1; }), array('allow', 'actions' => array('update'), 'expression' => function () { return Sipesq::isSupport() || Sipesq::getPermition('projeto.financeiro') >= 2; }), array('allow', 'actions' => array('delete'), 'expression' => function () { return Sipesq::isAdmin() || Sipesq::getPermition('projeto.financeiro') >= 100; }), array('deny', 'users' => array('*'))); }
/** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $model = $this->loadModel($id); //Se não for admin (testado por "user->id") ou se não for o perfil do próprio usuário bloqueia esta ação //if(!Yii::app()->user->id || !Yii::app()->user->name == $model->login) //throw new CHttpException(400,'Você não está autorizado a fazer esta operação'); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['Pessoa'])) { $connection = Yii::app()->db; $sql = "delete from projeto_pessoa_atuante where cod_pessoa = :cod_pessoa"; $command = $connection->createCommand($sql); $command->bindParam(":cod_pessoa", $id, PDO::PARAM_STR); $command->execute(); $model->attributes = $_POST['Pessoa']; if (isset($_POST['Pessoa']['projetos_atuante'])) { $model->projetos_atuante = $_POST['Pessoa']['projetos_atuante']; } if ($model->save()) { foreach ($model->projetos_atuante as $p) { $ppa = new ProjetoPessoaAtuante(); $ppa->cod_pessoa = $model->cod_pessoa; $ppa->cod_projeto = $p; $ppa->save(); unset($ppa); } $this->redirect(array('view', 'id' => $model->cod_pessoa)); } } $this->render('update', array('model' => $model)); }
/** * * Verifica se o usuário é membro do projeto. * @param integer $id */ public function isMember($id = null) { if ($id == null) { $id = Yii::app()->user->getId(); } // Se for admin já retorna permissão de acesso if (Sipesq::isSupport($id)) { return true; } //Verifica se atua no projeto if (ProjetoPessoaAtuante::model()->count('cod_projeto = :proj AND cod_pessoa = :id', array('id' => $id, 'proj' => $this->cod_projeto)) > 0) { return true; } //verifica se é um dos coordenadores if (Projeto::model()->count('cod_projeto = :proj AND (cod_professor = :id OR cod_grad = :id OR cod_pos_grad = :id)', array('id' => $id, 'proj' => $this->cod_projeto))) { return true; } //verifica se alguem delegou uma permissão a este usuário if (PermissaoProjeto::model()->count('cod_projeto = :projeto AND cod_pessoa = :id', array('id' => $id, 'projeto' => $this->cod_projeto))) { return true; } //o usuário não é permitido return false; }
/** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $model = $this->loadModel($id); $endereco_res = EnderecoResidencial::load(json_decode($model->endereco_residencial)); if (isset($_POST["EnderecoResidencial"])) { $model->endereco_residencial = json_encode($_POST["EnderecoResidencial"]); } if (isset($_POST['Pessoa'])) { $model->attributes = $_POST['Pessoa']; if (isset($_POST['Pessoa']['projetos_atuante'])) { $connection = Yii::app()->db; $sql = "delete from projeto_pessoa_atuante where cod_pessoa = :cod_pessoa"; $command = $connection->createCommand($sql); $command->bindParam(":cod_pessoa", $id, PDO::PARAM_STR); $command->execute(); $model->projetos_atuante = $_POST['Pessoa']['projetos_atuante']; } if ($model->save()) { if (isset($_POST['Pessoa']['projetos_atuante'])) { foreach ($model->projetos_atuante as $p) { $ppa = new ProjetoPessoaAtuante(); $ppa->cod_pessoa = $model->cod_pessoa; $ppa->cod_projeto = $p; $ppa->save(); unset($ppa); } } $this->redirect(array('view', 'id' => $model->cod_pessoa)); } } $this->render('update', array('model' => $model, 'endereco_res' => $endereco_res)); }
private function salvaPessoas($cod_projeto, $pessoas) { ProjetoPessoaAtuante::model()->deleteAll('cod_projeto = ' . $cod_projeto); foreach ($pessoas as $p) { $a = new ProjetoPessoaAtuante(); $a->cod_projeto = $cod_projeto; $a->cod_pessoa = $p; $a->save(); unset($a); } }
public function actionSetMembro() { if (!Yii::app()->request->isPostRequest) { throw new CHttpException(404); } $pessoa = $_POST['membro']['cod_pessoa']; $projeto = $_POST['membro']['cod_projeto']; $ativo = $_POST['membro']['ativo']; $model = ProjetoPessoaAtuante::model()->findByPk(array('cod_pessoa' => $pessoa, 'cod_projeto' => $projeto)); if ($model == null) { $model = new ProjetoPessoaAtuante(); } //Set Attributes $model->cod_pessoa = $pessoa; $model->cod_projeto = $projeto; $model->ativo = $ativo; $model->save(); echo var_dump($_POST['membro']); echo $model->ativo; //echo $model->attributes; }