Exemplo n.º 1
0
 /**
  * @Route("volcar/")
  * @Template("YacareRecursosHumanosBundle:Agente:listar.html.twig")
  */
 public function volcarAction(Request $request)
 {
     $id = $this->ObtenerVariable($request, 'id');
     $this->Paginar = false;
     if ($id) {
         $this->Where = 'r.id=' . $id;
     }
     $res = parent::listarAction($request);
     $ldap = new \Yacare\MunirgBundle\Helper\LdapHelper($this->container);
     $AgentesVolcados = array();
     foreach ($res['entities'] as $Agente) {
         if ($Agente->getPersona()->PuedeAcceder()) {
             $ldap->AgregarOActualizarAgente($Agente);
             $AgentesVolcados[] = $Agente;
         }
     }
     $res['entities'] = $AgentesVolcados;
     $ldap = null;
     return $res;
 }
Exemplo n.º 2
0
 /**
  * @Route("enrolarguardar/")
  * @Template()
  */
 public function enrolarguardarAction(Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $Dominio = 'municipiorg.gob.ar';
     $Usuario = $request->get('_username');
     $Contrasena = $request->get('_password');
     $Documento = str_replace(array('.', ' ', '-', ','), '', $request->get('_documento'));
     $Persona = $em->getRepository('YacareBaseBundle:Persona')->findBy(array('DocumentoNumero' => $Documento));
     if (count($Persona) != 1) {
         $this->get('session')->getFlashBag()->add('danger', 'No se encuentra una persona relacionada al DNI Nº ' . $Documento . ' en la base de datos.');
         return $this->redirect($this->generateUrl('yacare_munirg_ldap_enrolarinicio'));
     }
     $Persona = $Persona[0];
     $IdAgente = $Persona->getAgenteId();
     if (!$IdAgente) {
         $this->get('session')->getFlashBag()->add('danger', 'No se encuentra un agente municipal relacionado al DNI Nº ' . $Documento . '.');
         return $this->redirect($this->generateUrl('yacare_munirg_ldap_enrolarinicio'));
     }
     if ($IdAgente) {
         $Agente = $em->getRepository('YacareRecursosHumanosBundle:Agente')->find($IdAgente);
         if (!$Agente) {
             $this->get('session')->getFlashBag()->add('warning', 'No existe ningún agente con DNI Nº ' . $Documento);
             return $this->redirect($this->generateUrl('yacare_munirg_ldap_enrolarinicio'));
         }
     }
     $ServidorAd = \ldap_connect('192.168.100.44');
     ldap_set_option($ServidorAd, LDAP_OPT_PROTOCOL_VERSION, 3);
     ldap_set_option($ServidorAd, LDAP_OPT_REFERRALS, 0);
     $UsrBind = @\ldap_bind($ServidorAd, $Usuario . '@' . $Dominio, $Contrasena);
     ldap_unbind($ServidorAd);
     if ($UsrBind) {
         $Persona = $Agente->getPersona();
         $ldap = new \Yacare\MunirgBundle\Helper\LdapHelper($this->container);
         $GruposAnteriores = $ldap->ObtenerGruposAnteriores($Agente);
         $GruposActuales = $Agente->getGrupos();
         // Agrego los grupos al agente
         $GruposAgentes = $em->getRepository('YacareRecursosHumanosBundle:AgenteGrupo')->findAll();
         foreach ($GruposAnteriores as $GrupoAnterior) {
             // echo "Verificando " . $GrupoAnterior . '<br />';
             $existe = false;
             // Busco si ya está asociado a este grupo
             foreach ($GruposActuales as $GrupoActual) {
                 if (strcasecmp($GrupoAnterior, $GrupoActual->getNombreLdap()) == 0) {
                     $existe = true;
                     // echo "Ya está en el grupo " . $GrupoActual . '<br />';
                     break;
                 }
             }
             // El agente no está en el grupo. Lo agrego
             if (!$existe) {
                 // echo "No existe en " . $GrupoAnterior;
                 foreach ($GruposAgentes as $Grupo) {
                     if (strcasecmp($GrupoAnterior, $Grupo->getNombreLdap()) == 0) {
                         // echo "Agregando al grupo " . $Grupo . '<br />';
                         $Agente->getGrupos()->add($Grupo);
                     }
                 }
             }
         }
         // Actualizo sal, usuario, contraseña encodeada y contraseña hash
         $Persona->setSalt(md5(uniqid(null, true)));
         $Persona->setUsername($Usuario);
         $Persona->setPasswordEnc($Contrasena);
         $factory = $this->get('security.encoder_factory');
         $encoder = $factory->getEncoder($Persona);
         $ContrasenaEnc = $encoder->encodePassword($Contrasena, $Persona->getSalt());
         $Persona->setPassword($ContrasenaEnc);
         $em->persist($Persona);
         $em->flush();
         $ldap->AgregarOActualizarAgente($Agente);
         $ldap->CambiarContrasena($Agente);
         $ldap = null;
         return array('agente' => $Agente, 'usuario' => $Usuario, 'contrasena' => $Contrasena, 'documento' => $Documento);
     } else {
         $this->get('session')->getFlashBag()->add('danger', 'No se puede conectar con la cuenta proporcionada. Verifique el nombre de usuario y la contraseña.');
         return $this->redirect($this->generateUrl('yacare_munirg_ldap_enrolarinicio'));
     }
 }
Exemplo n.º 3
0
 /**
  * Actualizo el servidor de dominio al editar el agente.
  */
 public function guardarActionPostPersist($entity, $editForm)
 {
     if ($entity->getId()) {
         $ldap = new \Yacare\MunirgBundle\Helper\LdapHelper($this->container);
         $ldap->AgregarOActualizarAgente($entity);
         $ldap = null;
     }
     return;
 }