Example #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;
 }
Example #2
0
 public function index(Context $context)
 {
     $query = $this->em()->createQuery("SELECT e FROM Novosga\\Model\\Unidade e ORDER BY e.nome");
     $unidades = $query->getResult();
     // método de autenticação
     $auth = Configuracao::get($this->em(), AuthenticationProvider::KEY);
     if ($auth) {
         $auth = $auth->getValor();
     } else {
         $auth = array('type' => 'db', 'db' => array(), 'ldap' => array('host' => '', 'port' => '', 'baseDn' => '', 'loginAttribute' => '', 'username' => '', 'password' => '', 'filter' => ''));
         Configuracao::set($this->em(), AuthenticationProvider::KEY, $auth);
     }
     // tipo de numeração de senha
     $numeracao = Configuracao::get($this->em(), Senha::TIPO_NUMERACAO);
     if ($numeracao) {
         $numeracao = $numeracao->getValor();
     } else {
         $numeracao = Senha::NUMERACAO_UNICA;
         Configuracao::set($this->em(), Senha::TIPO_NUMERACAO, $numeracao);
     }
     // view values
     $this->app()->view()->set('unidades', $unidades);
     // database config
     $this->app()->view()->set('dbValues', array_filter($context->database()->values(), function ($item) {
         return is_string($item);
     }));
     // authentication config
     $this->app()->view()->set('auth', $auth);
     $this->app()->view()->set('numeracao', $numeracao);
     $this->app()->view()->set('numeracoes', $this->numeracoes);
 }
Example #3
0
 public function ajax_update(Context $context)
 {
     $response = new JsonResponse();
     $unidade = $context->getUnidade();
     $filaService = new FilaService($this->em());
     if ($unidade) {
         $ids = $context->request()->get('ids');
         $ids = Arrays::valuesToInt(explode(',', $ids));
         if (count($ids)) {
             $response->data['total'] = 0;
             $servicos = $this->servicos($unidade, ' e.servico IN (' . implode(',', $ids) . ') ');
             $em = $context->database()->createEntityManager();
             if ($servicos) {
                 foreach ($servicos as $su) {
                     $rs = $filaService->filaServico($unidade, $su->getServico());
                     $total = count($rs);
                     // prevent overhead
                     if ($total) {
                         $fila = [];
                         foreach ($rs as $atendimento) {
                             $arr = $atendimento->jsonSerialize(true);
                             $fila[] = $arr;
                         }
                         $response->data['servicos'][$su->getServico()->getId()] = $fila;
                         ++$response->data['total'];
                     }
                 }
             }
             $response->success = true;
         }
     }
     return $response;
 }
Example #4
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 create(Context $context, array $config = array())
 {
     $type = Arrays::value($config, 'type');
     $providerConfig = Arrays::value($config, $type, array());
     $em = $context->database()->createEntityManager();
     switch ($type) {
         case 'ldap':
             return new LdapProvider($em, $providerConfig);
         default:
             return new DatabaseProvider($em, $providerConfig);
     }
 }
Example #6
0
 protected function postSave(Context $context, SequencialModel $model)
 {
     /*
      * Se o pai tem unidades vinculadas a ele, é porque esse é o primeiro filho.
      * Então move todas as unidades para esse novo grupo
      */
     if ($this->adicionando) {
         $em = $context->database()->createEntityManager();
         $unidades = $this->countUnidades($model->getParent($em));
         if ($unidades > 0) {
             $query = $this->em()->createQuery("\n                    UPDATE\n                        Novosga\\Model\\Unidade e\n                    SET\n                        e.grupo = :novo\n                    WHERE\n                        e.grupo = :grupo\n                ");
             $query->setParameter('grupo', $model->getParent($em)->getId());
             $query->setParameter('novo', $model->getId());
             $query->execute();
         }
     }
 }
Example #7
0
 public function unidades(Context $context, UsuarioSessao $usuario)
 {
     if (!empty($this->unidades)) {
         return $this->unidades;
     }
     $em = $context->database()->createEntityManager();
     $query = $em->createQuery("\n            SELECT \n                e\n            FROM \n                Novosga\\Model\\Unidade e\n                INNER JOIN e.grupo g\n            WHERE \n                e.status = 1 AND\n                g.left >= :esquerda AND\n                g.right <= :direita\n            ORDER BY\n                e.nome\n        ");
     $lotacoes = $usuario->getWrapped()->getLotacoes();
     if (!empty($lotacoes)) {
         foreach ($lotacoes as $lotacao) {
             $query->setParameter('esquerda', $lotacao->getGrupo()->getLeft());
             $query->setParameter('direita', $lotacao->getGrupo()->getRight());
             $this->unidades = array_merge($this->unidades, $query->getResult());
         }
     }
     return $this->unidades;
 }