Migrar personas desde sistemas externos - Claves

Buen día, migramos 15mil personas y todos tienen su clave encriptada en md5.
No pudimos hacer el último paso porque el link está roto:

http://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.17.0/Migracion/Desde_sistemas_externos/Migracion/Personas

4. Migrar claves
Como las claves son ingresadas al sistemas en md5, éstas deberán convertirse mediante el comando ''migrar_claves'' de Guaraní 3. De lo contrario, los usuarios ingresados no podrán ingresar al sistema.

Cómo migro las claves para que puedan acceder al sistema los alumnos migrados?
Gracias
Saludos.

Mientras se arregla ese link, fijate este otro mensaje del foro:
http://foro.comunidad.siu.edu.ar/index.php?topic=7577.msg32269

Hola Gonzalo, agrego a lo de Ale:

Corregimos la documentación, ya que donde dice “migrar_claves” no es un link, sino un texto explicando que hay que correr dicho comando en Guaraní Gestión!!!

<path-to-guarani-gestion>$bin/guarani migrar_claves

saludos.

Perfecto, gracias.

Saludos

Una consulta acerca “migrar_claves”. En el .csv en la columna clave probé poniendo la clave sin encriptar y encriptada en md5, luego corrí el proceso migrar_claves.
El problema es que en ambos casos, al querer ingresar, me dice incorrecto.

Me fijo en mdp_personas y está bien el md5. Por ejemplo: “00720628” “febb007d9513592cc431fd242668b9de”

Hace falta hacer un paso más?

Hola Gonzalo,

El comando migrar_claves lo podes ver en la función migrar_claves del archivo php/extension_toba/guarani_modelo.php.

Lo que hace es tomar la columna clave de la tabla mdp_personas y aplicarle la función hash:


$enc = new bcrypt(10);
$clave = $enc->hash($dato['clave']);

Es decir, las claves en la DB deberían estar en md5 previamente al comando. Ya que si te fijas en la función encriptar de la clase php/nucleo/_lib/guarani_nucleo.php, vas a ver que a la clave plana se le aplica primero md5 y luego hash.

saludos.

Buen día, como mencioné, probé pasando la clave en md5, luego correr el comando pero al querer loguear me dice “Error Interno”.
Los logs dicen esto:

-o-o-o-o-o- Fecha: 01-10-2019 10:30:15 Operacion: Autentificaci�n de Usuarios Usuario: no_autentificado Version-PHP: 7.1.32-1+0~20190902.23+debian9~1.gbp9d1be7 Servidor: srvguaranid.uf.favaloro URI: /guarani/3.17/ Host: 172.16.2.20 ========== [INFO][toba] Se detecto cambio de operaci�n. Se limpia la memoria de la operacion [DEBUG][guarani] PUNTO DE MONTAJE: se carg� exitosamente el autoload del punto de montaje proyecto [DEBUG][guarani] PUNTO DE MONTAJE: se carg� exitosamente el autoload del punto de montaje personalizacion [INFO][guarani] PUNTO MONTAJE: se carg� la clase extension_toba/guarani_fuente_datos.php del punto de montaje proyecto. El path del mismo es /var/www/html/guarani/php [DEBUG][toba] Se cambia el �tem solicitado a =>array ( 0 => 'guarani', 1 => '5000122', ) [DEBUG][toba] [SECCION] Iniciando componentes... [INFO][guarani] PUNTO MONTAJE: se carg� la clase operaciones/login/ci_login.php del punto de montaje proyecto. El path del mismo es /var/www/html/guarani/php [DEBUG][toba] componente(5000225): [callback][ ini__operacion ] [DEBUG][toba] [SECCION] Procesando eventos... [INFO][toba] componente(5000225): No hay se�ales de un servicio anterior, no se atrapan eventos [DEBUG][guarani] ( SELECT amo.padre, amo.carpeta, amo.proyecto, amo.item, amo.descripcion as nombre, ai.orden as orden, ai.imagen, ai.imagen_recurso_origen, amo.padre = '1' as es_primer_nivel FROM apex_usuario_grupo_acc auga JOIN apex_menu_operaciones amo ON (auga.menu_usuario = amo.menu_id AND auga.proyecto = amo.proyecto) JOIN apex_usuario_grupo_acc_item augai ON (auga.proyecto = augai.proyecto AND auga.usuario_grupo_acc = augai.usuario_grupo_acc AND augai.item = amo.item) JOIN apex_item ai ON (augai.item = ai.item AND augai.proyecto = ai.proyecto) WHERE (ai.menu = 1) AND ai.item != ai.padre AND ( ai.publico = 1) AND (amo.proyecto = 'guarani') AND auga.menu_usuario IS NOT NULL UNION SELECT ai.padre, ai.carpeta, ai.proyecto, ai.item, ai.nombre as nombre, ai.orden as orden, ai.imagen, ai.imagen_recurso_origen, ai.padre = '1' as es_primer_nivel FROM apex_usuario_grupo_acc auga JOIN apex_usuario_grupo_acc_item augai ON (auga.proyecto = augai.proyecto AND auga.usuario_grupo_acc = augai.usuario_grupo_acc) JOIN apex_item ai ON (augai.item = ai.item AND augai.proyecto = ai.proyecto) WHERE auga.menu_usuario is null AND (ai.menu = 1) AND ai.item != ai.padre AND ( ai.publico = 1) AND (ai.proyecto = 'guarani') ) ORDER BY 1, 6 [DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio... [DEBUG][toba] componente(5000225): Pantalla de servicio: '' [DEBUG][toba] componente(5000225): [ callback ] 'conf__login' [DEBUG][toba] componente(5000225): [ callback ] 'conf__datos' [DEBUG][toba] [SECCION] Respondiendo al servicio__generar_html...

En la tabla ext.mig_personas tengo un usuario y clave:
usuario: 00227720
clave md5: fc7af60cc37f276125e1796155224c25

Al correr el la función migrar_claves aparece en mdp_personas así:
$2a$10$JKbAGNqGLERPoWLpYnn4zefkyHI.6vm22GieCufDhpv6y8ddcPErq

Pero al querer ingresar, no me deja.

Hola Gonzalo, gracias por la información!!!

¿que mensajes de error muestra al querer iniciar sesión?

Te pediría que me envíes los logs de Apache que se generan al querer iniciar sesión (carpeta instalacion/log de 3W).

saludos.

Buen día, el g3w3 no me generó ningún error, sólo me muestra el siguiente mensaje:
¡Atención! Su usuario no posee ninguna operación disponible. Para más información contáctese con el administrador de la página.

Hola Gonzalo,

Esto se debe a que el usuario no tiene ningún perfil de acceso a autogestión, se podra loguear en los siguientes casos:

Si es docente. (Perfil Docente)
Si esta inscrito a una carrera (es alumno. Perfil “Alumno”).
Si habilitas cursos (podrá entrar como alumno de tipo “Curso”. Perfil “Cursos”).

Por favor ingresa una solicitud y te enviamos un script para completar la tabla donde se define el perfil de acceso de cada usuario al modulo de autogestion (Tabla mdp_personas_tipo_usuario). Hace referencia a este foro en la solicitud.

Saludos.

Gracias Leonel.

Te hago una consulta, tenemos casos que hay alumnos que también son docentes. Cómo se deberían manejar esos casos? Por lo que ví el proceso pincha por mismo usuario ya que como usuario le ibamos a poner el nro de documento. Y a los docentes también le íbamos a poner el nro de documento.

Se deben enviar una única vez en personas y no en docentes? o deben ir en ambos pero con diferentes usuarios? Es decir que el alumno tiene una cuenta y el docente va a tener otra?. Por ejemplo, agregarle un número más a la cuenta del docente.

Gracias.

En la tabla de docentes (ext.mig_docentes) incluirás todos los docentes a migrar. Lo que ya existan como alumnos en la base de Guarani o personas nuevas que no existen. Si existe ya el registro de persona de ese docente (lo busca por tipo y nro de documento), no lo registra como una nueva persona sino que en base a ese registro de persona ya existente (mdp_personas) registra el legajo el docente (sga_docentes).

El error que da es en el pre-control del modulo de docentes y es este?

Error: Hay datos de codigo de acceso al sistema (USUARIO) que ya existen en Guarani 3, verifique!!
Por lo que veo esta mal ese control, debiera dar error si no se trata de la misma persona.

Archivo: \02_Modulos\02_Docentes\01_Pre_Controles\fx_prectrl_docentes.sql
Donde dice:

	IF EXISTS (SELECT * FROM ext.mig_docentes WHERE usuario IS NOT NULL AND usuario IN (SELECT usuario FROM mdp_personas)) THEN
		sql='SELECT * FROM ext.mig_docentes WHERE usuario IS NOT NULL AND usuario IN (SELECT usuario FROM mdp_personas)';
		r := (false,'Error: Hay datos de codigo de acceso al sistema (USUARIO) que ya existen en Guarani 3, verifique!!',sql)::ext.control_type;
		RETURN NEXT r;
	END IF;

Reemplazar por:

	IF EXISTS (SELECT * FROM ext.mig_docentes WHERE usuario IS NOT NULL 
               AND EXISTS (SELECT 1 FROM mdp_personas as p JOIN mdp_personas_documentos as pd ON p.persona = p.persona
                WHERE p.usuario = ext.mig_docentes.usuario AND pd.nro_documento <> ext.mig_docentes.nro_documento)) THEN
		sql='SELECT * FROM ext.mig_docentes WHERE usuario IS NOT NULL 
             AND EXISTS (SELECT 1 FROM mdp_personas as p JOIN mdp_personas_documentos as pd ON p.persona = p.persona
             WHERE p.usuario = ext.mig_docentes.usuario AND pd.nro_documento <> ext.mig_docentes.nro_documento)';
		r := (false,'Error: Hay datos de codigo de acceso al sistema (USUARIO) que ya existen en Guarani 3, verifique!!',sql)::ext.control_type;
		RETURN NEXT r;
	END IF;

Buenas tardes,
Ya tenemos las personas migradas (son 15mil) pero al querer migrar los docentes, seguimos recibiendo errores.

2019/10/23 16:11:05 - docentes - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : An error occurred executing this job entry : 
2019/10/23 16:11:05 - docentes - Couldn't execute SQL: SELECT * FROM ext.mig_docentes()
2019/10/23 16:11:05 - docentes - 
2019/10/23 16:11:05 - docentes - ERROR: duplicate key value violates unique constraint "iu_pais_tipo_nro_documento"
  Detail: Key (pais_documento, tipo_documento, nro_documento)=(54, 3, 20041394693) already exists.
  Where: SQL statement "INSERT INTO mdp_personas_documentos (persona,pais_documento,tipo_documento,nro_documento)
2019/10/23 16:11:05 - docentes - 			   VALUES (_persona, 54, 3,cursor1.cuit_cuil)"
PL/pgSQL function ext.mig_docentes() line 52 at SQL statement

Pasa en todas las personas que ya existen en el sistema (que fueron migradas).

Qué debo hacer ?

Gracias.

Podes dar un ejemplo del registro de un docente como lo cargan en la tabla mig_docentes y ademas ese mismo docente que ya existe dado de alta en la base que tipos y nros de documento tiene registrado?

Pareciera que en el registro de la tabla mig_docentes ademas del tipo y nro de documento, tambien registran el nro de cuil.
El error lo da cuando intenta registrar el nro de cuil/cuit, esto significa que esta intentando registrar a ese docente como una nueva persona porque no encontró una persona con el mismo tipo y nro de documento en la base de datos. Esto me confunde porque si ya existe ese docente dado de alta como persona en al base debería tener cargado el mismo tipo y nro de documento.

Por favor revisa eso y avisanos.

2

Buen día Alejandro,
Gracias por tu respuesta.
Tiene el mismo documento el docente a migrar que ya existe como persona. El problema está en que tiene un 0 adelante en el nro de documento y en la mig_personas lo toma al cero y en la mig_docentes no toma el cero.

Por ejemplo:
ext.mig_personas = 04139469
ext.mig_docentes = 4139469

Se podrá hacer este cambio para que mig_docentes tome el cero?

Gracias

Es raro porque en las dos tablas esta como varchar(15), aunque ya deberia estar en varchar(20) lo mismo que el campo nro_cuil.
Pero mas alla de este tema, veo que en mig_docentes es un varchar, con lo cual al importar los datos no deberia sacar el 0, salvo que el proceso del Spoon que lee los datos del archivo de texto y los importa a la base considere que es un integer y ahi le saca el 0.
Espera a mañana y lo vemos.

¿Esta bien ese nro de documento con un cero a izquierda?

1