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; }
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(); } }
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; }
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; }
<?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();