コード例 #1
0
 /**
  * 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());
 }