Ejemplo n.º 1
0
 public function alterar_senha(Context $context)
 {
     $response = new JsonResponse();
     $usuario = $context->getUser();
     try {
         if (!$usuario) {
             throw new \Exception(_('Nenhum usuário na sessão'));
         }
         $atual = $context->request()->post('atual');
         $senha = $context->request()->post('senha');
         $confirmacao = $context->request()->post('confirmacao');
         $hash = $this->app()->getAcessoService()->verificaSenha($senha, $confirmacao);
         $em = $context->database()->createEntityManager();
         // verificando senha atual
         $query = $em->createQuery("SELECT u.senha FROM Novosga\\Model\\Usuario u WHERE u.id = :id");
         $query->setParameter('id', $usuario->getId());
         $rs = $query->getSingleResult();
         if ($rs['senha'] != Security::passEncode($atual)) {
             throw new \Exception(_('Senha atual não confere'));
         }
         // atualizando o banco
         $query = $em->createQuery("UPDATE Novosga\\Model\\Usuario u SET u.senha = :senha WHERE u.id = :id");
         $query->setParameter('senha', $hash);
         $query->setParameter('id', $usuario->getId());
         $query->execute();
         $response->success = true;
     } catch (\Exception $e) {
         $response->message = $e->getMessage();
     }
     return $response;
 }
Ejemplo n.º 2
0
 /**
  * Verifica se a senha informada é válida e a retorna encriptada.
  * @param type $senha
  * @param type $confirmacao
  * @return type
  * @throws Exception
  */
 public function verificaSenha($senha, $confirmacao)
 {
     if (strlen($senha) < 6) {
         throw new Exception(_('A senha deve possuir no mínimo 6 caracteres.'));
     }
     if ($senha != $confirmacao) {
         throw new Exception(_('A confirmação de senha não confere com a senha.'));
     }
     return Security::passEncode($senha);
 }
Ejemplo n.º 3
0
 /**
  * Verifica o usuário e senha na tabela de usuarios
  * @param type $username
  * @param type $password
  * @return boolean
  */
 public function auth($username, $password)
 {
     $query = $this->em->createQuery("SELECT u FROM Novosga\\Model\\Usuario u WHERE u.login = :login AND u.status = 1");
     $query->setParameter('login', $username);
     try {
         $user = $query->getSingleResult();
         if ($user) {
             if ($user->getSenha() == \Novosga\Security::passEncode($password)) {
                 return $user;
             }
         }
     } catch (\Doctrine\ORM\NoResultException $e) {
     }
     return false;
 }
Ejemplo n.º 4
0
 protected function checkPassword($user, $password)
 {
     return $user['senha'] == Security::passEncode($password);
 }
Ejemplo n.º 5
0
 public function do_install(Context $context)
 {
     if ($context->request()->isPost()) {
         $response = new JsonResponse(true, _('Instalação concluída com sucesso'));
         $conn = null;
         $session = $context->session();
         try {
             if (App::isInstalled()) {
                 throw new Exception(_('O SGA já está instalado'));
             }
             $data = $session->get(InstallData::SESSION_KEY);
             if (!$data) {
                 throw new Exception(_('Os dados da instalação não foram encontrados. Favor iniciar novamente'));
             }
             $db = new DatabaseConfig($data->database);
             $em = $db->createEntityManager();
             $conn = $em->getConnection();
             //$conn->beginTransaction();
             $version = Configuracao::get($em, 'version');
             // atualizando/migrando
             if ($version) {
                 $scripts = self::migrationScripts($version->getValor(), App::VERSION);
                 foreach ($scripts as $sql) {
                     if (!is_readable($sql)) {
                         $msg = _('Script SQL de instalação não encontrado (%s)');
                         throw new Exception(sprintf($msg, $sql));
                     }
                     // executando arquivo sql de migracao
                     $conn->exec(file_get_contents($sql));
                 }
             } else {
                 $sqlInitFile = $this->script_create($session->get('adapter'));
                 // verifica se consegue ler o arquivo de criacao do banco
                 if (!is_readable($sqlInitFile)) {
                     $msg = _('Script SQL de instalação não encontrado (%s)');
                     throw new Exception(sprintf($msg, $sqlInitFile));
                 }
                 // executando arquivo sql de criacao
                 $conn->exec(file_get_contents($sqlInitFile));
                 // instalando modulos
                 $service = new \Novosga\Service\ModuloService($em);
                 $modules = $this->modules();
                 foreach ($modules as $dir) {
                     $service->install($dir, 'sga.' . basename($dir), 1);
                 }
                 // finalizando instalacao com SQL auxiliar
                 $sqlDataFile = $this->script_data();
                 // verifica se consegue ler o arquivo dos dados iniciais
                 if (!is_readable($sqlDataFile)) {
                     $msg = _('Script SQL de instalação não encontrado (%s)');
                     throw new Exception(sprintf($msg, $sqlDataFile));
                 }
                 // executando arquivo sql de dados iniciais
                 $adm = $data->admin;
                 $adm['senha'] = Security::passEncode($adm['senha']);
                 $sql = Strings::format(file_get_contents($sqlDataFile), $adm);
                 $conn->exec($sql);
             }
             //$conn->commit();
             // atualiza versao no banco
             Configuracao::set($em, 'version', App::VERSION);
             // atualizando arquivo de configuracao
             $db->save();
             // se sucesso limpa a sessao
             $context->session()->clear();
         } catch (Exception $e) {
             if ($conn && $conn->isTransactionActive()) {
                 $conn->rollBack();
             }
             $response->success = false;
             $response->message = $e->getMessage();
         }
     } else {
         $response = $this->postErrorResponse();
     }
     return $response;
 }