src/Controller/UsuarioController.php line 128

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\Security\Core\SecurityContext;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use App\Crud\Controller\crudPlainController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use App\Entity\SeguridadUsuario;
  8. use App\Entity\SeguridadRol;
  9. use App\Entity\SeguridadCodigoActivacion;
  10. use App\Entity\SeguridadConfiguracion;
  11. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. use Psr\Log\LoggerInterface;
  14. use Symfony\Component\Mime\Email;
  15. use Symfony\Component\Mailer\MailerInterface;
  16. use Symfony\Component\HttpFoundation\RequestStack;
  17. use Doctrine\ORM\EntityManagerInterface;
  18. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  19. use App\Utiles\ValidarIdentificacion;
  20. class UsuarioController extends crudPlainController
  21. {
  22.     private $encoder;
  23.     
  24.     public function __construct(TranslatorInterface $translatorLoggerInterface $loggerMailerInterface $mailerRequestStack $requestStackEntityManagerInterface $entityManagerUserPasswordHasherInterface $encoder)
  25.     {
  26.         parent::__construct($translator$logger$mailer$requestStack$entityManager);
  27.         
  28.         $this->encoder $encoder;
  29.     }
  30.     
  31.     protected function indexParamsForTwig()
  32.     {
  33.         $params parent::indexParamsForTwig();
  34.         $parameterActiveConfiguration $this->getParameter('SECURITY_CONF');
  35.         $params['configuracionSeguridad'] = $this->em->getRepository(SeguridadConfiguracion::class)->getActiveConfiguration($parameterActiveConfiguration);
  36.         return $params;
  37.     }
  38.     public function doSearchAction($numeroId$routeClassName)
  39.     {
  40.         $this->setUtilProperties();
  41.         $this->setFilterData($routeClassName);
  42.         $data = array();
  43.         $usuario $this->em->getRepository(SeguridadUsuario::class)
  44.                             ->findOneBy(array('username'=>$numeroId));
  45.         if ($usuario)
  46.         {
  47.             $data['resultado']='USER';
  48.             $data['id']=$usuario->getId();
  49.             $data['identificacion']=$usuario->getUsername();
  50.             $data['nombre']=$usuario->getNombreCompleto();
  51.             $data['foto']=$usuario->getFoto() ? $usuario->getFoto()->getUrl(): '';
  52.             $data['telefono']=$usuario->getTelefono();
  53.             $data['movil']=$usuario->getMovil();
  54.             $data['mail']=$usuario->getEmail();
  55.             $data['availabe'] = true;
  56.             switch ($routeClassName)
  57.             {
  58.                 case 'admin':
  59.                     if ($usuario->isRoleAssigned('ROLE_ADMINISTRADOR'))
  60.                     {
  61.                         $rol $this->em->getRepository(SeguridadRol::class)
  62.                             ->getRolByName('ROLE_ADMINISTRADOR');
  63.                         $data['availabe'] = false;
  64.                         $data['rol'] =  $this->translator->trans('usuario.inhabilitado.rolcomun',array(),'crud') . ': ('$rol->getDescripcion() . ')';
  65.                     }
  66.                     break;
  67.                 case 'operador':
  68.                     if ($usuario->isRoleAssigned('ROLE_OPERADOR_PUNTO_IMPRESION'))
  69.                     {
  70.                         $rol $this->em->getRepository(SeguridadRol::class)
  71.                             ->getRolByName('ROLE_OPERADOR_PUNTO_IMPRESION');
  72.                         $data['availabe'] = false;
  73.                         $data['rol'] =  $this->translator->trans('usuario.inhabilitado.rolcomun',array(),'crud') . ': ('$rol->getDescripcion() . ')';
  74.                     }
  75.                     if ($usuario->isRoleAssigned('ROLE_FINANCIERO'))
  76.                     {
  77.                             $rol $this->em->getRepository(SeguridadRol::class)
  78.                                 ->getRolByName('ROLE_FINANCIERO');
  79.                             $data['availabe'] = false;
  80.                             $data['rol'] =  $this->translator->trans('usuario.inhabilitado.rolcomun',array(),'crud') . ': ('$rol->getDescripcion() . ')';
  81.                     }
  82.                     break;
  83.                 case 'financiero':
  84.                     if ($usuario->isRoleAssigned('ROLE_FINANCIERO'))
  85.                     {
  86.                             $rol $this->em->getRepository(SeguridadRol::class)
  87.                                 ->getRolByName('ROLE_FINANCIERO');
  88.                             $data['availabe'] = false;
  89.                             $data['rol'] =  $this->translator->trans('usuario.inhabilitado.rolcomun',array(),'crud') . ': ('$rol->getDescripcion() . ')';
  90.                     }
  91.                     if ($usuario->isRoleAssigned('ROLE_OPERADOR_PUNTO_IMPRESION'))
  92.                     {
  93.                             $rol $this->em->getRepository(SeguridadRol::class)
  94.                                 ->getRolByName('ROLE_OPERADOR_PUNTO_IMPRESION');
  95.                             $data['availabe'] = false;
  96.                             $data['rol'] =  $this->translator->trans('usuario.inhabilitado.rolcomun',array(),'crud') . ': ('$rol->getDescripcion() . ')';
  97.                     }
  98.                     
  99.                     break;
  100.             }
  101.         }
  102.         else
  103.         {
  104.             $data['es_cliente'] = 0;
  105.             $data['resultado']='NO_USER';
  106.         }
  107.         $json = new \Symfony\Component\HttpFoundation\Response(json_encode($data));
  108.         $json->headers->set('Content-Type''application/json');
  109.         return $json;
  110.     }
  111.     protected function setFiltros()
  112.     {
  113.         $rol $this->getRol();
  114.         if ($rol)
  115.         {
  116.             $this->filterData['assignedRoles']= $rol->getId();
  117.         }
  118.     }
  119.     public function fastCreateAction($rol$routeClassName$id)
  120.     {
  121.         $this->setClassMap($routeClassName);
  122.         $this->setUtilProperties();
  123.         $this->setFilterData($routeClassName);
  124.         $this->routeClassName $routeClassName;
  125.         $this->rol $rol;
  126.         $this->accion 'UPDATE';
  127.         
  128.         $entity $this->em->getRepository(SeguridadUsuario::class)->find($id);
  129.         foreach ($entity->getAssignedRoles()->toArray() as $rolAssigned)
  130.         {
  131.             $entity->removeAssignedRoles($rolAssigned);
  132.         }
  133.         
  134.         $this->setValuesAfterForm($entity);
  135.         $this->em->persist($entity);
  136.         $this->em->flush();
  137.         $this->afterSave($entity);
  138.         if ($this->routeClassName == 'contratado' )
  139.         {
  140.             $data = array('ok'=>true);
  141.             $data = new Response(json_encode($data));
  142.             $data->headers->set('Content-Type''application/json');
  143.             return $data;
  144.         }
  145.         return $this->redirect($this->generateUrl('crud_index', array('rol'=>$rol'routeClassName'=>$routeClassName)));
  146.     }
  147.     protected function setValuesAfterForm($entity)
  148.     {
  149.         parent::setValuesAfterForm($entity);
  150.         $this->logger->error('setValuesAfterForm'); 
  151.         if ($this->accion=='CREATE')
  152.         {
  153.             $entity->setActivo(false);
  154.             $entity->setFechaRegistro(new \DateTime());
  155.             $entity->setIntentosFallidos(0);
  156.             $entity->setEliminado(false);
  157.             $entity->setPrimerIngreso(TRUE);
  158.         }
  159.         $this->logger->error('routeClassName: '.$this->routeClassName); 
  160.         $rol$this->getRol();
  161.         if ($rol && !$entity->isRoleAssigned($rol->getNombre()))
  162.         {
  163.             $this->logger->error('rol: '.$rol->getNombre()); 
  164.             $entity->addAssignedRoles($rol);
  165.         }
  166.     }
  167.     protected function getRol()
  168.     {
  169.         $rol=null;
  170.         $rolRepo $this->em->getRepository(SeguridadRol::class);
  171.         switch ($this->routeClassName)
  172.         {
  173.             case 'admin':
  174.                 $rol $rolRepo->getRolByName('ROLE_ADMINISTRADOR');
  175.                 break;
  176.             case 'coordinadordireccion':
  177.                 $rol $rolRepo->getRolByName('ROLE_COORDINADOR_DIRECCION');
  178.                 break;
  179.             case 'coordinadorbase':
  180.                 $rol $rolRepo->getRolByName('ROLE_COORDINADOR_BASE');
  181.                 break;
  182.             case 'coordinadorcentro':
  183.                 $rol $rolRepo->getRolByName('ROLE_COORDINADOR_CENTRO');
  184.                 break;
  185.             case 'operadorcentro':
  186.                 $rol $rolRepo->getRolByName('ROLE_OPERADOR_CENTRO');
  187.                 break;
  188.             case 'operadorunidad':
  189.                 $rol $rolRepo->getRolByName('ROLE_OPERADOR_UNIDAD');
  190.                 break;
  191.             case 'operadorinstruccion':
  192.                 $rol $rolRepo->getRolByName('ROLE_OPERADOR_INSTRUCCION');
  193.                 break;
  194.             case 'medico':
  195.                 $rol $rolRepo->getRolByName('ROLE_MEDICO');
  196.                 break;
  197.             case 'psicologo':
  198.                 $rol $rolRepo->getRolByName('ROLE_PSICOLOGO');
  199.                 break;
  200.             case 'psicologojefe':
  201.                 $rol $rolRepo->getRolByName('ROLE_PSICOLOGO_JEFE');
  202.                 break;
  203.             case 'laboratorista':
  204.                 $rol $rolRepo->getRolByName('ROLE_LABORATORISTA');
  205.                 break;
  206.             case 'odontologo':
  207.                 $rol $rolRepo->getRolByName('ROLE_ODONTOLOGO');
  208.                 break;
  209.         }
  210.         return $rol;
  211.     }
  212.     
  213.     protected function afterSave($entity)
  214.     {
  215.         parent::afterSave($entity);
  216.         if ($this->accion=='CREATE')
  217.         {
  218.             $notAllowedActivation = ['medico''odontologo''laboratorista'];
  219.             if (isset($notAllowedActivation[$this->routeClassName]))
  220.             {
  221.                 return;
  222.             }
  223.             $parameterActiveConfiguration $this->getParameter('SECURITY_CONF');
  224.             $configuracionSeguridad $this->em->getRepository(SeguridadConfiguracion::class)->getActiveConfiguration($parameterActiveConfiguration);
  225.             if ($configuracionSeguridad)
  226.             {
  227.                 if ($configuracionSeguridad->getCodigoActivacion())
  228.                 {
  229.                     $this->sendActivationCode($entity$configuracionSeguridad);
  230.                     $entity->setActivo(FALSE);
  231.                 }    
  232.                 else
  233.                 {
  234.                     if (!$password $configuracionSeguridad->getDefaultPassword())
  235.                     {
  236.                         $password $entity->getUserName();
  237.                     }
  238.                     $password $this->setSecurePassword($entity$password);
  239.                     $entity->setPassword($password);
  240.                     $entity->setActivo(TRUE);
  241.                 }
  242.             }
  243.             $this->em->persist($entity);
  244.             $this->em->flush();
  245.         }
  246.     }
  247.     public function deleteAction($rol$id$routeClassName)
  248.     {
  249.         $this->setInitialValues($rol$routeClassName);
  250.         $entity $this->em->getRepository($this->bundleName.'\\Entity\\'.$this->className)->find($id);
  251.         if (!$entity)
  252.           throw new \RuntimeException($this->translator->trans(
  253.                                                      'error.instance_not_found',
  254.                                                      array('%classname%' => $this->routeClassName.'/'.$this->className,
  255.                                                            '%id%' => $id),
  256.                                                      'crud'));
  257.         if (!$this->allowActionExecution('DELETE'$entity))
  258.         {
  259.             return $this->render('@crud/accesDenied.html.twig');
  260.         }
  261.         $repoRol $this->em->getRepository(SeguridadRol::class);
  262.         $repoUser $this->em->getRepository(SeguridadUsuario::class);
  263.         $ok true;
  264.         switch ($this->routeClassName)
  265.         {
  266.             case 'admin':
  267.                 $rolAdmin $repoRol->findOneBy(array('nombre'=>'ROLE_ADMINISTRADOR'));
  268.                 $admins $repoUser->createQueryBuilder('u')
  269.                         ->innerJoin('u.assignedRoles','r')
  270.                         ->where('u.id <> '.$entity->getId())
  271.                         ->andWhere('r.id = '.$rolAdmin->getId())
  272.                         ->getQuery()->getResult();
  273.                 if (count($admins) == 0)
  274.                 {
  275.                     $this->session->getFlashBag()
  276.                             ->set('danger',
  277.                                 $this->translator->trans($this->routeClassName.'.error.unicoadmin', array(), 'crud'));
  278.                     $ok false;
  279.                 }
  280.                 break;
  281.         }
  282.         if($ok)
  283.         {
  284.             $rolEliminar $this->getRol();
  285.             if ($rolEliminar)
  286.             {
  287.                 $entity->removeAssignedRoles($rolEliminar);
  288.             }
  289.             $this->em->persist($entity);
  290.             $this->em->flush();
  291.             return $this->deleteRedirectOnSuccess($entity);
  292.         }
  293.         else
  294.         {
  295.            return $this->deleteRedirectOnFail($entity);
  296.         }
  297.     }
  298.     public function showUsuarioPerfilAction()
  299.     {
  300.         $usuario $this->getUser();
  301.         if (is_object($usuario))
  302.         {
  303.             return $this->forward('App\Controller\UsuarioController::showAction', array('rol'=>'all''id'=>$usuario->getId(), 'routeClassName'=>'usuarioperfil'));
  304.         }
  305.         else
  306.         {
  307.             return $this->redirect ($this->generateUrl ('app_login'));
  308.         }
  309.     }
  310.     protected function resendActivationLink($user)
  311.     {
  312.         $texto $this->translator->trans('seguridad.activacion.reenvio');
  313.         if (!$user)
  314.         {
  315.             $texto 'Usuario no encontrado';
  316.         }
  317.         else
  318.         {
  319.             $parameterActiveConfiguration $this->getParameter('SECURITY_CONF');
  320.             $configuracionSeguridad $this->em->getRepository(SeguridadConfiguracion::class)->getActiveConfiguration($parameterActiveConfiguration);
  321.             if ($configuracionSeguridad &&$configuracionSeguridad->getCodigoActivacion())
  322.             {
  323.                 if (!$this->sendActivationCode($user$configuracionSeguridad))
  324.                 {
  325.                     $texto $this->translator->trans('seguridad.activacion.error.no_reenvio');
  326.                 }
  327.             }else{
  328.                 
  329.                  $texto 'No existe configuracion '.$this->getParameter('SECURITY_CONF');
  330.                 
  331.             }
  332.         }
  333.         return $texto;
  334.     }
  335.     
  336.     public function resendActivationUsernameLinkAction($username)
  337.     {
  338.         $user $this->em->getRepository(SeguridadUsuario::class)->findOneBy(['username'=>$username]);
  339.         $texto $this->resendActivationLink($user);
  340.         
  341.         return new \Symfony\Component\HttpFoundation\Response($texto);
  342.     }
  343.     
  344.     public function resendActivationLinkAction($userId)
  345.     {
  346.         $user $this->em->getRepository(SeguridadUsuario::class)->find($userId);
  347.         $texto $this->resendActivationLink($user);
  348.         
  349.         return new \Symfony\Component\HttpFoundation\Response($texto);
  350.     }
  351.     
  352.     protected function sendActivationCode(SeguridadUsuario $user$configuracionSeguridad)
  353.     {
  354.         $token md5(uniqid());
  355.         $fecha = new \DateTime();
  356.         $codigo = new SeguridadCodigoActivacion();
  357.         $codigo->setCodigo($token);
  358.         $codigo->setUsuario($user);
  359.         $codigo->setFechaEnvio($fecha);
  360.         
  361.         $vigenciaCodigo $configuracionSeguridad->getVigenciaCodigo();
  362.         if ($vigenciaCodigo>0)
  363.         {
  364.             $fechaMaxActivacion = clone $fecha;                    
  365.             $fechaMaxActivacion->add(new \DateInterval('PT'.$vigenciaCodigo.'H'));                    
  366.             $codigo->setFechaVigencia($fechaMaxActivacion);
  367.         } 
  368.         $this->em->persist($codigo);
  369.         $this->em->flush();
  370.         $url $this->generateUrl('usuario_register_activation', array('token' => $token), UrlGeneratorInterface::ABSOLUTE_URL);
  371.         try
  372.         {
  373.             $subject $this->translator->trans('seguridad.mail.sender', array()).' - '.$this->translator->trans('seguridad.activacion.subject', array());
  374.             $email = new Email();
  375.             $email->from($this->getParameter('mailer_from'))
  376.                 ->to($user->getEmail())
  377.                 //->cc('[email protected]')
  378.                 //->bcc('[email protected]')
  379.                 //->replyTo('[email protected]')
  380.                 //->priority(Email::PRIORITY_HIGH)
  381.                 ->subject($subject)
  382.                 ->html($this->render('Security/email_create.html.twig',
  383.                         array('usuario' => $user'url' => $url))->getContent());
  384.             $this->mailer->send($email);                                                          
  385.                        
  386.         } catch (\Exception $exc)
  387.         {
  388.             $texto $this->translator->trans('seguridad.mail.error.conexion', array());
  389.             $this->logger->error('WWWemail error: '.$exc->getMessage());
  390.             $this->session->getFlashBag()->set('danger'$texto);
  391.             return false;
  392.         }
  393.         return true;
  394.     }
  395.     protected function setSecurePassword($user$password)
  396.     {
  397.         return $this->encoder->hashPassword($user$password);
  398.     }
  399.     
  400.     protected function indexGetFields()
  401.     {
  402.         $indexFields parent::indexGetFields();
  403.         unset($indexFields['nombres']);
  404.         unset($indexFields['apellidos']);
  405.         unset($indexFields['eliminado']);
  406.         unset($indexFields['fechaEliminacion']);
  407.         unset($indexFields['fechaRegistro']);
  408.         unset($indexFields['password']);
  409.         unset($indexFields['primerIngreso']);
  410.         unset($indexFields['causaBloqueo']);
  411.         unset($indexFields['fechaVigenciaPassword']);
  412.         unset($indexFields['intentosFallidos']);
  413.         unset($indexFields['direccion']);
  414.         unset($indexFields['conectado']);
  415.         unset($indexFields['fechaAcceso']);
  416.         unset($indexFields['foto']);
  417.    
  418.     
  419. /*        unset($indexFields['telefono']);
  420.         unset($indexFields['movil']);
  421.         unset($indexFields['email']);
  422.         unset($indexFields['email']);
  423. */
  424.         if ($this->routeClassName == 'admin' || $this->routeClassName == 'coordinadordireccion')
  425.         {
  426.             unset($indexFields['baseMovilizacion']);
  427.             unset($indexFields['centroMovilizacion']);
  428.             unset($indexFields['unidadMilitar']);
  429.             unset($indexFields['centroInstruccion']);
  430.         }  
  431.         if ($this->routeClassName == 'coordinadorbase')
  432.         {
  433.             unset($indexFields['centroInstruccion']);
  434.             unset($indexFields['centroMovilizacion']);
  435.             unset($indexFields['unidadMilitar']);
  436.         }
  437.         if ($this->routeClassName == 'coordinadorcentro' || $this->routeClassName == 'operadorcentro' ||
  438.             $this->routeClassName == 'medico' || $this->routeClassName == 'odontologo' || 
  439.             $this->routeClassName == 'psicologojefe' || $this->routeClassName == 'psicologo' || 
  440.             $this->routeClassName == 'laboratorista' )
  441.         {
  442.             unset($indexFields['centroInstruccion']);
  443.             unset($indexFields['unidadMilitar']);
  444.         }
  445.         if ($this->routeClassName == 'operadorinstruccion')
  446.         {
  447.             unset($indexFields['baseMovilizacion']);
  448.             unset($indexFields['centroMovilizacion']);
  449.             unset($indexFields['unidadMilitar']);
  450.         }
  451.         $nombre = array('nombreCompleto'=>array('nombre'=>'nombreCompleto',
  452.                                                 'type'=>'string',
  453.                                                 'label'=>$this->translator->trans(
  454.                                                                       $this->translatorBase.'.fields.nombreCompleto',
  455.                                                                       array(),
  456.                                                                       'crud')));
  457.         return array_merge($nombre,$indexFields);
  458.     }   
  459.     
  460.     protected function showGetFields($entity null)
  461.     {
  462.         $showFields parent::showGetFields($entity);
  463.         unset($showFields['fechaVigenciaServicio']);
  464.         unset($showFields['configuracionSeguridad']);
  465.         unset($showFields['foto']);
  466.         unset($showFields['conectado']);
  467.         unset($showFields['fechaAcceso']);
  468.         
  469.         //$security = $params['securityContext'];
  470.         if ($this->routeClassName=='usuario' || $this->routeClassName=='usuarioperfil')
  471.         {    
  472.             unset($showFields['activo']);
  473.             unset($showFields['eliminado']);
  474.             unset($showFields['fechaEliminacion']);
  475.             unset($showFields['configuracionSeguridad']);
  476.         }  
  477.         unset($showFields['password']);
  478.         unset($showFields['codigoInicio']);
  479.         unset($showFields['fechaMaxActivacion']);
  480. //        unset($showFields['intentosFallidos']);
  481.         unset($showFields['causaBloqueo']);
  482.         unset($showFields['primerIngreso']);
  483.         $showFields['username']['atributos']['attr']['containerclass']='full-row';
  484.         $showFields['imagen'] = array('nombre' => 'imagen',
  485.                                       'type' => 'string',
  486.                                       'label'  => $this->translator->trans(
  487.                                           $this->translatorBase.'.fields.foto',
  488.                                           array(),
  489.                                           'crud'));
  490.         $showFields['nombreCompleto'] = array('nombre'=>'nombreCompleto',
  491.                                                 'type'=>'string',
  492.                                                 'label'=>$this->translator->trans(
  493.                                                                       $this->translatorBase.'.fields.nombreCompleto',
  494.                                                                       array(),
  495.                                                                       'crud'));
  496.         return $showFields;
  497.     }
  498.     protected function getFormFilter()
  499.     {
  500.         $formulario parent::getFormFilter();
  501.         unset($formulario['password']);
  502.         unset($formulario['intentosFallidos']);
  503.         unset($formulario['primerIngreso']);
  504.         unset($formulario['notificaciones']);
  505.         unset($formulario['fechaRegistro_WWdesdeWW']);
  506.         unset($formulario['fechaRegistro_WWhastaWW']);
  507.         unset($formulario['fechaEliminacion_WWdesdeWW']);
  508.         unset($formulario['fechaEliminacion_WWhastaWW']);
  509.         unset($formulario['fechaVigenciaPassword_WWdesdeWW']);
  510.         unset($formulario['fechaVigenciaPassword_WWhastaWW']);
  511.         unset($formulario['apellidos']);
  512.         unset($formulario['eliminado']);
  513.         unset($formulario['causaBloqueo']);
  514.         unset($formulario['foto']);
  515.         unset($formulario['email']);
  516.         unset($formulario['telefono']);
  517.         unset($formulario['movil']);
  518.         unset($formulario['direccion']);
  519.         unset($formulario['conectado']);
  520.         unset($formulario['fechaAcceso']);
  521.         
  522. //    private $baseMovilizacion;
  523. //    private $cargo;
  524. //    private $centroInstruccion;
  525. //    private $centroMovilizacion;
  526. //    private $grado;
  527. //    private $unidadMilitar;
  528.     
  529.         if ($this->routeClassName == 'admin' || $this->routeClassName == 'coordinadordireccion')
  530.         {
  531.             unset($formulario['baseMovilizacion']);
  532.             unset($formulario['centroInstruccion']);
  533.             unset($formulario['centroMovilizacion']);
  534.             unset($formulario['unidadMilitar']);
  535.         }
  536.         if ($this->routeClassName == 'coordinadorbase')
  537.         {
  538.             unset($formulario['centroInstruccion']);
  539.             unset($formulario['centroMovilizacion']);
  540.             unset($formulario['unidadMilitar']);
  541.         }
  542.         if ($this->routeClassName == 'coordinadorcentro' || $this->routeClassName == 'operadorcentro' ||
  543.             $this->routeClassName == 'medico' || $this->routeClassName == 'odontologo' || 
  544.             $this->routeClassName == 'psicologojege' || $this->routeClassName == 'psicologo' || 
  545.             $this->routeClassName == 'laboratorista' )
  546.         {
  547.             unset($formulario['centroInstruccion']);
  548.             unset($formulario['unidadMilitar']);
  549.         }
  550.         if ($this->routeClassName == 'operadorinstruccion')
  551.         {
  552.             unset($formulario['baseMovilizacion']);
  553.             unset($formulario['centroMovilizacion']);
  554.             unset($formulario['unidadMilitar']);
  555.         }
  556. //        unset($formulario['username']);
  557.         $formulario['assignedRoles']['atributos']['disabled']=true;
  558.         $formulario['nombres']['type']='custom';
  559.          
  560.         return $formulario;
  561.     }
  562.     protected function getFormulario($entity)
  563.     {
  564.         $formulario parent::getFormulario($entity);
  565.         
  566.         unset($formulario['eliminado']);
  567.         unset($formulario['fechaEliminacion']);
  568.         unset($formulario['fechaVigenciaPassword']);
  569.         unset($formulario['fechaRegistro']);
  570.         unset($formulario['intentosFallidos']);
  571.         unset($formulario['activo']);
  572.         unset($formulario['causaBloqueo']);
  573.         unset($formulario['password']);
  574.         unset($formulario['primerIngreso']);
  575.         unset($formulario['assignedRoles']);
  576.         unset($formulario['conectado']);
  577.         unset($formulario['fechaAcceso']);
  578.         
  579.         if ($this->accion=='UPDATE')
  580.         {
  581.             $formulario['username']['atributos']['attr']['readonly']='true';    
  582.         }
  583.             
  584.         $formulario['direccion']['atributos']['attr']['containerclass']='full-row';   
  585.         if ($this->routeClassName == 'admin' || $this->routeClassName == 'coordinadordireccion')
  586.         {
  587.             unset($formulario['baseMovilizacion']);
  588.             unset($formulario['centroMovilizacion']);
  589.             unset($formulario['unidadMilitar']);
  590.             unset($formulario['centroInstruccion']);
  591.         }
  592.         if ($this->routeClassName == 'coordinadorbase')
  593.         {
  594.             unset($formulario['centroMovilizacion']);
  595.             unset($formulario['unidadMilitar']);
  596.             unset($formulario['centroInstruccion']);
  597.         }
  598.         if ($this->routeClassName == 'coordinadorcentro' || $this->routeClassName == 'operadorcentro' ||
  599.             $this->routeClassName == 'medico' || $this->routeClassName == 'odontologo' || 
  600.             $this->routeClassName == 'psicologojefe' || $this->routeClassName == 'psicologo' || 
  601.             $this->routeClassName == 'laboratorista' )
  602.         {
  603.             unset($formulario['unidadMilitar']);
  604.             unset($formulario['centroInstruccion']);
  605.         }
  606.         if ($this->routeClassName == 'operadorinstruccion')
  607.         {
  608.             unset($formulario['baseMovilizacion']);
  609.             unset($formulario['centroMovilizacion']);
  610.             unset($formulario['unidadMilitar']);
  611.         }
  612.         if ($this->routeClassName=='usuario_activacion'
  613.         {
  614.             unset($formulario['username']);
  615.             unset($formulario['activo']);
  616.         }
  617.         $formulario['email']['atributos']['attr']['class']='email';
  618.         return $formulario;
  619.     }
  620.     
  621.     protected function checkNonUniqueConstrains($entity)
  622.     {
  623.         if (parent::checkNonUniqueConstrains($entity))
  624.         {
  625.             if ($entity->getAssignedRoles()->count()==0)
  626.             {
  627.                 $this->session->getFlashBag()
  628.                                  ->set('danger'
  629.                                        $this->translator->trans($this->translatorBase.'.error.sinrol', array(), 'crud'));
  630.                 return false;
  631.             }
  632.             if (!$entity->getMovil() && !$entity->getTelefono())
  633.             {
  634.                $this->session->getFlashBag()
  635.                                  ->set('danger'
  636.                                        $this->translator->trans$this->translatorBase.'.error.telefono', array(), 'crud'));
  637.                return false;
  638.             }    
  639.             if ($this->accion=='CREATE')
  640.             {
  641.                 $validador = new ValidarIdentificacion();
  642.                 if (!$validador->isValida($entity->getUserName(), '05'))
  643.                 {
  644.                     $this->session->getFlashBag()->set('danger''Identificación incorrecta: '.$validador->getError());
  645.                     //return false;
  646.                 }
  647.             }
  648.             return true;
  649.         }
  650.         return false;
  651.     }   
  652.     
  653.     public function togleActiveAction($userId)
  654.     {
  655.         $usuario $this->em->getRepository(SeguridadUsuario::class)->find($userId);
  656.         $usuario->setActivo(!$usuario->getActivo());
  657.         $this->em->persist($usuario);
  658.         $this->em->flush();
  659.         $data = new Response(json_encode(array('ok'=>true)));
  660.         $data->headers->set('Content-Type''application/json');
  661.         return $data;
  662.     }
  663.     
  664. }