/** * Método que gera a página que permite trocar a senha do usuário. * * @param string $token */ public function nova_senha($token = false) { if (!$token) { echo Javascript::alert('Usuário não encontrado'); echo Javascript::window_location('/btalento/curriculos/login/'); return; } $curriculo = $this->objCurriculo->getObject("token = '" . addslashes($token) . "'"); if (!$curriculo) { echo Javascript::alert('Usuário não encontrado'); echo Javascript::window_location('/btalento/curriculos/login/'); return; } $agora = new DateTime(Data::sqlAgora()); $diferenca = $agora->diff(new DateTime($curriculo->dt_update)); if ($diferenca->y > 0 || $diferenca->m > 0 || $diferenca->d > 2) { echo Javascript::alert('O link informado já expirou. Acesse a página de login e solicite um novo link'); echo Javascript::window_location('/btalento/curriculos/login/'); return; } $this->setData('curriculo', $curriculo)->setData('token', $token)->printView(); }
/** * Método que faz a atualização do banco de acorod com os dados do objeto * @param string $where O filtro para a edição. Caso seja informado FALSE como valor, o id atual do objeto será usado * @param array $colunasSet As colunas a serem editadas * @param boolean $colunasSetExcluir Caso seja definido como TRUE, o array $colunasSet será usado para excluir itens da lista de colunas a serem editadas * @return boolean */ public function update($where = FALSE, array $colunasSet = array(), $colunasSetExcluir = FALSE) { if (!$where) { if (is_null($this->id) || !(int) $this->id) { throw new Exception("Invalid value: o indice do objeto é inválido"); } $where = 'id = ' . $this->id; } $query = 'update ' . $this->getTabela() . ' set '; unset($this->mapaSql['id']); unset($this->mapaSql['user_insert']); unset($this->mapaSql['tipo_usuario_insert']); unset($this->mapaSql['dt_insert']); //Atualizando os dados de registros $this->dt_update = Data::sqlAgora(); if (isset($_SESSION['usuario'])) { $this->usuarioLogado = unserialize($_SESSION['usuario']); $this->user_last_update = $this->usuarioLogado->get_idUsuario(); $this->tipo_usuario_update = $this->usuarioLogado->get_tipoUsuarioAtivo()->get_idTipoUsuario(); } else { $this->user_last_update = 0; } $colunas = array_keys($this->mapaSql); if (count($colunasSet)) { $colunas = $colunasSetExcluir ? array_diff($colunas, $colunasSet) : $colunasSet; if (!$colunasSetExcluir) { array_push($colunas, 'dt_update'); array_push($colunas, 'user_last_update'); array_push($colunas, 'tipo_usuario_update'); } } foreach ($colunas as $value) { $query .= $value . ' = :' . $value . ','; } $query = substr($query, 0, -1) . ' where ' . $where; return $this->query($query, $colunas); }
/** * Método que grava a nova senha no banco. */ public function novasenha() { $token = filter_input(INPUT_POST, 'link', FILTER_SANITIZE_MAGIC_QUOTES); if (!$token) { $this->setMensagem('Usuário não encontrado'); $this->printResposta(); return; } $curriculo = $this->objCurriculo->getObject("token = '" . addslashes($token) . "'"); if (!$curriculo) { $this->setMensagem('Usuário não encontrado'); $this->printResposta(); return; } $agora = new DateTime(Data::sqlAgora()); $diferenca = $agora->diff(new DateTime($curriculo->dt_update)); if ($diferenca->y > 0 || $diferenca->m > 0 || $diferenca->d > 2) { $this->setMensagem('O link informado já expirou. Acesse a página de login e solicite um novo link'); $this->printResposta(); return; } $senha1 = filter_input(INPUT_POST, 'novasenha1'); $senha2 = filter_input(INPUT_POST, 'novasenha2'); if (!$senha1 || !$senha2) { $this->setMensagem('A nova senha é inválida. A senha deve conter no ' . 'mínimo 6 caracteres'); $this->printResposta(); return; } if (strlen($senha1) < 6) { $this->setMensagem('A nova senha é inválida. A senha deve conter no ' . 'mínimo 6 caracteres'); $this->printResposta(); return; } if ($senha1 != $senha2) { $this->setMensagem('As senhas não conferem. As senhas devem ser iguais'); $this->printResposta(); return; } $this->objCurriculo->setSenha($senha1)->setToken(''); if ($this->objCurriculo->update("token = '" . addslashes($token) . "'", array('senha', 'token'))) { $this->statusTrue(); $this->setMensagem('A sua senha foi editada com sucesso. ' . 'Efetue login para poder editar o seu currículo'); } else { $this->setMensagem('Ocorreu um erro ao tentar editar a sua senha. ' . 'Tente novamente mais tarde.'); } $this->printResposta(); }