Beispiel #1
0
 public function auth_save(Context $context)
 {
     $response = new JsonResponse();
     try {
         $auth = Configuracao::get($this->em(), AuthenticationProvider::KEY);
         $value = $auth->getValor();
         $type = $context->request()->post('type');
         $value['type'] = $type;
         if (!isset($value[$type])) {
             $value[$type] = array();
         }
         foreach ($_POST as $k => $v) {
             $value[$type][$k] = $v;
         }
         $auth = App::authenticationFactory()->create($context, $value);
         if (!$auth) {
             throw new \Exception(_('Opção inválida'));
         }
         $auth->test();
         Configuracao::set($this->em(), AuthenticationProvider::KEY, $value);
         $response->success = true;
     } catch (\Exception $e) {
         $response->message = $e->getMessage();
     }
     return $response;
 }
Beispiel #2
0
 public function validate(Context $context)
 {
     $username = $context->request()->post('username');
     $password = $context->request()->post('password');
     $error = null;
     if (!empty($username) && !empty($password)) {
         $em = $context->database()->createEntityManager();
         $config = \Novosga\Model\Configuracao::get($em, \Novosga\Auth\AuthenticationProvider::KEY);
         $auth = $config ? $config->getValor() : array();
         $provider = App::authenticationFactory()->create($context, $auth);
         $user = $provider->auth($username, $password);
         if ($user) {
             // atualizando o session id
             $user->setSessionId(session_id());
             $user->setUltimoAcesso(new \DateTime());
             $em->merge($user);
             $em->flush();
             // caso o usuario so tenha acesso a uma unica unidade, ja define como atual
             $us = new \Novosga\Model\Util\UsuarioSessao($user);
             $unidades = $this->app()->getAcessoService()->unidades($context, $us);
             if (sizeof($unidades) == 1) {
                 $us->setUnidade($unidades[0]);
             }
             $context->setUser($us);
         } else {
             $error = _('Usuário ou senha inválido');
         }
     }
     if (!$error) {
         $this->app()->gotoHome();
     } else {
         $this->app()->flash('error', $error);
         $this->app()->gotoLogin();
     }
 }
 public function call()
 {
     $req = $this->app->request();
     $uri = $req->getResourceUri();
     $installed = App::isInstalled();
     if (!$installed && !self::isInstallPage($uri)) {
         $this->app->response()->redirect($this->app->urlFor('install'));
     } elseif ($installed && self::isInstallPage($uri)) {
         $this->app->response()->redirect($this->app->urlFor('login'));
     } else {
         $this->next->call();
     }
 }
Beispiel #4
0
 public function call()
 {
     if (App::isInstalled()) {
         $req = $this->app->request();
         $uri = substr($req->getResourceUri(), 1);
         if (strpos($uri, '/')) {
             $uri = substr($uri, 0, strpos($uri, '/'));
         }
         if (!in_array($uri, self::$freePages)) {
             $user = $this->context->getUser();
             if ($user) {
                 // verifica se ha outra pessoa usando o mesmo usuario
                 if ($user->getSessionId() != session_id()) {
                     if ($this->app->request->isAjax()) {
                         // se for ajax devolve o json informando sobre a sessao invalida
                         $response = new \Novosga\Http\JsonResponse();
                         $response->invalid = true;
                         echo $response->toJson();
                         exit;
                     }
                     $this->app->response()->redirect($this->app->urlFor('logout'));
                 } else {
                     $unidade = $user->getUnidade();
                     $acessoService = $this->context->app()->getAcessoService();
                     // modulos globais
                     $this->app->view()->set('modulosGlobal', $acessoService->modulos($this->context, $user, Modulo::MODULO_GLOBAL));
                     // modulos unidades
                     if ($unidade) {
                         $this->app->view()->set('modulosUnidade', $acessoService->modulos($this->context, $user, Modulo::MODULO_UNIDADE));
                     }
                     $this->app->view()->set('unidades', $acessoService->unidades($this->context, $user));
                     $this->app->view()->set('unidade', $unidade);
                     $this->app->view()->set('usuario', $user);
                 }
             } else {
                 if ($this->app->request->isAjax()) {
                     // se for ajax devolve o json informando sobre a sessao inativa
                     $response = new \Novosga\Http\JsonResponse();
                     $response->inactive = true;
                     echo $response->toJson();
                     exit;
                 }
                 $this->app->response()->redirect($this->app->urlFor('login'));
             }
         }
     }
     $this->next->call();
 }
 public static function isNumeracaoServico()
 {
     if (App::isInstalled()) {
         $db = \Novosga\Config\DatabaseConfig::getInstance();
         $tipoNumeracao = \Novosga\Model\Configuracao::get($db->createEntityManager(), Senha::TIPO_NUMERACAO);
         if ($tipoNumeracao) {
             return $tipoNumeracao->getValor() == Senha::NUMERACAO_SERVICO;
         }
     }
     return false;
 }
 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;
 }
Beispiel #7
0
 public function info(Context $context)
 {
     if (!NOVOSGA_INSTALLED) {
         echo App::info();
     } else {
         echo _('Por questões de segurança as informações sobre o ambiente são desabilitadas após a instalação.');
     }
     exit;
 }
Beispiel #8
0
<?php

/**
 * Esse arquivo foi criado para agilizar o carregamento dos recursos dos módulos.
 * Quando uma requisição a um recurso do módulo é detectada pelo .htaccess ela é
 * redireciona para esse arquivo poder tratar, evitando verificar usuário, acesso, 
 * abrir conexão com o banco, etc.
 */
require_once '../bootstrap.php';
use Novosga\App;
$app = new App();
$app->any('/modules/:moduleKey/resources/:resource+', function ($moduleKey, $resource) use($app) {
    $app->moduleResource($moduleKey, join(DS, $resource));
});
$app->run();