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; }
/** * 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); }
/** * 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; }
protected function checkPassword($user, $password) { return $user['senha'] == Security::passEncode($password); }
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; }