Files
2026-09-22 20:38:51 -04:00

140 lines
4.8 KiB
Plaintext

{================================================
FUNCION : AUTENTIFICACION
OBJETIVO : VALIDAR FUNCION DEL USUARIO
FECHA : 30/6/2009
PROGRAMADOR: JUAN SOTO
==================================================
}
DEFINE usuario,clave,nclave,cclave VARCHAR(50),
pperfil,pprinter1,pprinter2,ckprinter,pcodcia INT,
cambia_c VARCHAR(10),
altera STRING
FUNCTION autentificacion()
WHENEVER ERROR CONTINUE
CALL startlog("errores.log")
OPEN WINDOW inicio AT 1,1 WITH FORM "inicial"
INPUT BY NAME usuario,clave WITHOUT DEFAULTS
ON ACTION show_password
CALL toggle_password("formonly.clave")
BEFORE INPUT
DISPLAY ".\\IMAGENES\\logo.png" TO logo
AFTER INPUT
IF INT_FLAG THEN
ERROR "OPERACION CANCELADA"
EXIT program
END IF
IF LENGTH(clave) > 12 THEN
CALL fgl_winmessage("INFO","LONGITUD DE LA CLAVE NO PUEDE EXCEDER 12 CARACTERES","INFO")
NEXT FIELD usuario
END IF
CONNECT TO "decomarmol" USER usuario USING clave
IF STATUS < 0 THEN
ERROR "USUARIO NO ES VALIDO"
CONTINUE INPUT
END IF
SELECT a.cod_perfil,a.printerdefecto,a.otro_printer ,a.printer_cheque,a.cambia_clave,a.cod_cia
INTO pperfil,pprinter1,pprinter2,ckprinter,cambia_c,pcodcia
FROM seg0001 a
WHERE a.usuario = usuario
IF STATUS != 0 THEN
ERROR "APLICACION ESTA REPORTANDO UN ERROR, COMUNIQUESE CON SU ADMINISTRADOR"
END IF
UPDATE seg0001 SET seg0001.fecha_ultimo_login = getdate(),
seg0001.clave = clave WHERE seg0001.usuario = usuario
LET cambia_c = UPSHIFT(cambia_c)
IF cambia_c = "SI" THEN
CALL fgl_winmessage("INFO","DEBE CAMBIAR LA CLAVE","INFO")
CALL cambia_clave()
END IF
EXIT INPUT
END INPUT
CLOSE WINDOW inicio
RETURN usuario,clave,pperfil,pprinter1,pprinter2,ckprinter,cambia_c,pcodcia
END FUNCTION
FUNCTION cambia_clave()
OPEN WINDOW cambia AT 1,1 WITH FORM "cambia"
DISPLAY usuario TO usuario
DISPLAY clave TO clave
INPUT BY NAME nclave,cclave
AFTER INPUT
IF INT_FLAG THEN
CALL FGL_WINMESSAGE( "ATENCION", "OPERACION CANCELADA", "stop")
EXIT INPUT
END IF
IF nclave IS NULL OR nclave = " " THEN
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO PUEDE ESTAR EN BLANCO", "stop")
NEXT FIELD nclave
END IF
IF cclave IS NULL OR cclave = " " THEN
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO PUEDE ESTAR EN BLANCO", "stop")
NEXT FIELD cclave
END IF
IF LENGTH(cclave) > 12 THEN
CALL fgl_winmessage("INFO","LA CLAVE NO PUEDE SER MAYOR DE 12 CARACTERES","INFO")
NEXT FIELD cclave
END IF
IF nclave <> cclave THEN
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO COINCIDE CON LA CONFIRMACION DE LA CLAVE", "stop")
NEXT FIELD nclave
ELSE
IF fgl_getenv('TIPODB') = 'MSSQL' THEN
LET altera = "sp_password @old = '", clave CLIPPED,"', ",
"@new = '",nclave CLIPPED,"' ,",
"@loginame = '",usuario CLIPPED, "'"
ELSE
LET altera = "ALTER USER '",usuario CLIPPED,"' IDENTIFIED BY '",nclave CLIPPED,"'"
END IF
PREPARE caltera FROM altera
EXECUTE caltera
IF STATUS = 0 THEN
UPDATE seg0001 SET cambia_clave = "NO" WHERE seg0001.usuario = usuario
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE CAMBIADA SATISFACTORIAMENTE", "stop")
LET clave = nclave
ELSE
CALL FGL_WINMESSAGE( "ATENCION", "NO FUE POSIBLE EL CAMBIO DE LA CLAVE, TRATE NUEVA VEZ", "stop")
NEXT FIELD nclave
END IF
END IF
EXIT INPUT
END INPUT
IF INT_FLAG THEN
LET INT_FLAG = FALSE
RETURN
CLOSE WINDOW cambia
END IF
END FUNCTION
FUNCTION toggle_password(f)
DEFINE f STRING -- field name
DEFINE n om.domnode
DEFINE w ui.window
LET w = ui.window.getCurrent()
LET n = w.findNode ("FormField", f)
LET n = n.getFirstChild ()
CASE n.getAttribute("isPassword")
WHEN "0"
CALL n.setAttribute ("isPassword", "1")
WHEN "1"
CALL n.setAttribute ("isPassword", "0")
END CASE
END FUNCTION