134 lines
4.7 KiB
Plaintext
134 lines
4.7 KiB
Plaintext
|
|
{================================================
|
|
FUNCION : AUTENTIFICACION
|
|
OBJETIVO : VALIDAR FUNCION DEL USUARIO
|
|
FECHA : 30/6/2009
|
|
PROGRAMADOR: JUAN SOTO
|
|
==================================================
|
|
}
|
|
|
|
FUNCTION autentificacion()
|
|
DEFINE usuario,clave STRING,
|
|
cambia_c CHAR(2),
|
|
pperfil,ckprinter,pprinter1,pprinter2 SMALLINT
|
|
|
|
WHENEVER ERROR CONTINUE
|
|
CALL startlog("errores.log")
|
|
|
|
OPEN WINDOW inicio AT 1,1 WITH FORM "inicial"
|
|
|
|
INPUT BY NAME usuario,clave ATTRIBUTES (UNBUFFERED, 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 INPUT
|
|
END IF
|
|
IF LENGTH(clave) > 12 THEN
|
|
CALL mbox_msg("INFO","LONGITUD DE LA CLAVE NO PUEDE EXCEDER 12 CARACTERES","information")
|
|
NEXT FIELD usuario
|
|
END IF
|
|
CONNECT TO "smarmotech" 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
|
|
INTO pperfil,pprinter1,pprinter2,ckprinter,cambia_c
|
|
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 mbox_msg("INFO","DEBE CAMBIAR LA CLAVE","information")
|
|
CALL cambia_clave(usuario,clave)
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
CLOSE WINDOW inicio
|
|
RETURN pperfil,pprinter1,pprinter2,ckprinter,usuario,clave
|
|
END FUNCTION
|
|
|
|
FUNCTION cambia_clave(usuario,clave)
|
|
DEFINE usuario,clave,nclave,cclave,altera STRING
|
|
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 mbox_msg( "ATENCION", "OPERACION CANCELADA", "stop")
|
|
EXIT INPUT
|
|
END IF
|
|
|
|
IF nclave IS NULL OR nclave = " " THEN
|
|
CALL mbox_msg( "ATENCION", "CLAVE NUEVA NO PUEDE ESTAR EN BLANCO", "stop")
|
|
NEXT FIELD nclave
|
|
END IF
|
|
IF cclave IS NULL OR cclave = " " THEN
|
|
CALL mbox_msg( "ATENCION", "CLAVE NUEVA NO PUEDE ESTAR EN BLANCO", "stop")
|
|
NEXT FIELD cclave
|
|
END IF
|
|
IF LENGTH(cclave) > 12 THEN
|
|
CALL mbox_msg("INFO","LA CLAVE NO PUEDE SER MAYOR DE 12 CARACTERES","information")
|
|
NEXT FIELD cclave
|
|
END IF
|
|
IF nclave <> cclave THEN
|
|
CALL mbox_msg( "ATENCION", "CLAVE NUEVA NO COINCIDE CON LA CONFIRMACION DE LA CLAVE", "stop")
|
|
NEXT FIELD nclave
|
|
ELSE
|
|
|
|
LET altera = "sp_password @old = '", clave CLIPPED,"', ",
|
|
"@new = '",nclave CLIPPED,"' ,",
|
|
"@loginame = '",usuario CLIPPED, "'"
|
|
|
|
PREPARE caltera FROM altera
|
|
EXECUTE caltera
|
|
IF STATUS = 0 THEN
|
|
UPDATE seg0001 SET cambia_clave = "NO" WHERE seg0001.usuario = usuario
|
|
CALL mbox_msg( "ATENCION", "CLAVE CAMBIADA SATISFACTORIAMENTE", "stop")
|
|
LET clave = nclave
|
|
ELSE
|
|
CALL mbox_msg( "ATENCION", "NO FUE POSIBLE EL CAMBIO DE LA CLAVE, TRATE NUEVA VEZ", "stop")
|
|
NEXT FIELD nclave
|
|
END IF
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
CLOSE WINDOW cambia
|
|
IF INT_FLAG THEN
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
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
|