{================================================ 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