/** * Editar usuario * * @return ViewModel */ public function editarAction() { $login = $this->params()->fromRoute('id', null); /** @var UsuarioService $service */ $service = $this->getFromServiceLocator(Usuario::SERVICE); /** @var \Application\Entity\User $usuario */ $usuario = $service->findByLogin($login); if (!$usuario) { return $this->redirect()->toRoute(Rotas::USUARIO); } /** @var \Application\Entity\User $usuarioLogado */ $usuarioLogado = $this->getFromServiceLocator(Usuario::ZFCUSER_AUTH_SERVICE)->getIdentity(); /** @var UsuarioForm $form */ $form = $this->getFromServiceLocator(self::USUARIO_FORM); $form->get(Usuario::FLD_ORGAO)->setValue($usuario->getUnidade()->getOrgao()->getSeqOrgao()); $redirectUrl = $this->url()->fromRoute(Rotas::USUARIO) . "/editar/{$login}"; $prg = $this->prg($redirectUrl, true); if ($prg instanceof Response) { return $prg; } elseif ($prg === false) { $form->bind($usuario); $form->setObject($usuario); $unidadeAtual = $form->get(Usuario::FLD_UNIDADE)->getValue()->getSeqUnidade(); $unidades = $this->createSelectUnidades($form->get(Usuario::FLD_ORGAO)->getValue()); $form->get(Usuario::FLD_UNIDADE)->setValueOptions($unidades); $form->get(Usuario::FLD_UNIDADE)->setValue($unidadeAtual); return array('form' => $form, 'isCorregedor' => $usuarioLogado->isCorregedorGeral()); } $form->setData($prg); if (strcmp($usuario->getLoginUsuario(), $prg[Usuario::FLD_LOGIN]) === 0) { $form->getInputFilter()->remove(Usuario::FLD_LOGIN); } $isValid = true; if ($form->get(Usuario::FLD_SENHA)->getValue()) { $pwd = $form->get(Usuario::FLD_SENHA)->getValue(); $bcrypt = new Bcrypt(); $bcrypt->setCost($service->getOptions()->getPasswordCost()); if ($bcrypt->verify($pwd, $usuario->getPassword())) { $form->setMessages(array(Usuario::FLD_SENHA => [Mensagens::getMensagem('M13')])); $isValid = false; } } if ($isValid && $form->isValid()) { try { if ($usuario = $service->editar($prg)) { $this->flashMessenger()->addSuccessMessage(Mensagens::getMensagem('M09')); return $this->redirect()->toRoute(Rotas::USUARIO); } else { $this->flashMessenger()->addErrorMessage(Mensagens::getMensagem('MERRO')); } } catch (\Exception $e) { $escaper = new \Zend\Escaper\Escaper('utf-8'); $msg = '<br/><br/>' . $escaper->escapeJs(nl2br($e->getMessage())); $this->flashMessenger()->addErrorMessage(Mensagens::getMensagem('MERRO') . $msg); } } if ($usuario) { $unidadeAtual = $usuario->getUnidade()->getSeqUnidade(); $unidades = $this->createSelectUnidades($form->get(Usuario::FLD_ORGAO)->getValue()); $form->get(Usuario::FLD_UNIDADE)->setValueOptions($unidades); $form->get(Usuario::FLD_UNIDADE)->setValue($unidadeAtual); } return array('form' => $form, 'isCorregedor' => $usuarioLogado->isCorregedorGeral()); }