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