Ejemplo
IF _Login(1) MESSAGEBOX("Usuario autenticado OK.",64,"Login") ELSE *-- Usuario no válido RETURN ENDIF
* ---------------------------------------- * Function _Login( lnNivel, lnNivelSup) * ---------------------------------------- * Funcion que muestra el form de LOGIN * Parámetros: * lnNivel [opc] - Nivel autorizado. * si se omite permite cualquier * usuario registrado * ---------------------------------------- FUNCTION _Login( lnNivel, lnNivelSup) LOCAL llRet IF PARAMETERS() < 1 lnNivel = 0 ENDIF IF PARAMETERS() < 2 lnNivelSup = 10 ENDIF loForm = CREATEOBJECT("Login", lnNivel, lnNivelSup) loForm.SHOW() llRet = loForm.lRetorno RELEASE loForm loForm = .NULL. RETURN llRet ENDFUNC * ---------------------------------------- *-- Class: Login *-- Ingreso de password * ---------------------------------------- DEFINE CLASS Login AS FORM HEIGHT = 110 WIDTH = 220 DOCREATE = .T. AUTOCENTER = .T. BORDERSTYLE = 2 CAPTION = "Ingrese usuario y contraseña" CONTROLBOX = .F. CLOSABLE = .F. MAXBUTTON = .F. MINBUTTON = .F. WINDOWTYPE = 1 *-- Nivel inferior de acceso nNivelInf = -1 *-- Nivel superior de acceso nNivelSup = -1 *-- Numero de intentos de validacion nIntentos = -1 NAME = "Login" *-- retorna .T. si el usuario y contraseña son correctos lRetorno = .F. ADD OBJECT cmdaceptar AS COMMANDBUTTON WITH ; TOP = 72, LEFT = 48, HEIGHT = 25, WIDTH = 72, ; FONTNAME = "MS Sans Serif", FONTSIZE = 8, ; CAPTION = "Aceptar", DEFAULT = .T., ; TABINDEX = 5, NAME = "cmdAceptar" ADD OBJECT cmdcancelar AS COMMANDBUTTON WITH ; TOP = 72, LEFT = 133, HEIGHT = 25, WIDTH = 72, ; FONTNAME = "MS Sans Serif", ; FONTSIZE = 8, CANCEL = .T., ; CAPTION = "Cancelar", ; TABINDEX = 6, NAME = "cmdCancelar" ADD OBJECT lblusuario AS LABEL WITH ; FONTNAME = "MS Sans Serif", FONTSIZE = 8, ; ALIGNMENT = 1, BACKSTYLE = 0, CAPTION = "Usuario", ; HEIGHT = 15, LEFT = 12, TOP = 16, WIDTH = 60, ; TABINDEX = 2, NAME = "lblUsuario" ADD OBJECT lblcontrasena AS LABEL WITH ; FONTNAME = "MS Sans Serif", FONTSIZE = 8, ; ALIGNMENT = 1, BACKSTYLE = 0, CAPTION = "Contraseña", ; HEIGHT = 15, LEFT = 12, TOP = 40, WIDTH = 60, ; TABINDEX = 4, NAME = "lblContrasena" ADD OBJECT txtusuario AS TEXTBOX WITH ; FONTNAME = "MS Sans Serif", FONTSIZE = 8, ; FORMAT = "k", HEIGHT = 21, ; LEFT = 85, MAXLENGTH = 15, ; TABINDEX = 1, TOP = 12, ; WIDTH = 120, NAME = "txtUsuario" ADD OBJECT txtcontrasena AS TEXTBOX WITH ; FONTNAME = "MS Sans Serif", FONTSIZE = 8, ; FORMAT = "k", HEIGHT = 21, ; LEFT = 85, MAXLENGTH = 15, ; TABINDEX = 3, TOP = 36, ; WIDTH = 120, PASSWORDCHAR = "*", ; NAME = "txtContrasena" PROCEDURE validausuario LPARAMETERS tcUsuario, tcContrasena, tnNivelInf, tnNivelSup LOCAL lcUser, lcPass, lnNivel *--- pasa usuario a mayuscula tcUsuario = ALLTRIM(UPPER(tcUsuario)) tcContrasena = ALLTRIM(tcContrasena) *----------------------------- *--- Aqui busco los datos del usuario *--- en la tabla de Usuarios *----------------------------- lcUser = "LUIS" lcPass = "siul" lnNivel = 5 *----------------------------- *--- valido usuario y contraseña IF NOT (tcUsuario == lcUser ; AND tcContrasena == lcPass) *--- No existe usuario o Contraseña no válida =MESSAGEBOX('Usuario o contraseña inválida',48,'Advertencia') RETURN .F. ENDI IF NOT BETWEEN(lnNivel, tnNivelInf, tnNivelSup) *--- Nivel no autorizado =MESSAGEBOX('Usuario no autorizado para este módulo',48,'Advertencia') RETURN .F. ENDI *--- Todo correcto RETURN .T. ENDPROC PROCEDURE UNLOAD RETURN THISFORM.lRetorno ENDPROC PROCEDURE INIT LPARAMETERS tnNivelInf, tnNivelSup IF PARAMETERS() < 0 tnNivelInf = 0 ENDIF IF PARAMETERS() < 1 tnNivelSup = 10 ENDIF THISFORM.nIntentos = 0 THISFORM.nNivelInf = tnNivelInf THISFORM.nNivelSup = tnNivelSup THISFORM.txtUsuario.SETFOCUS THISFORM.cmdAceptar.DEFAULT = .T. && porque lo pierde en el SetFocus ENDPROC PROCEDURE cmdaceptar.CLICK THISFORM.nIntentos=THISFORM.nIntentos+1 THISFORM.lRetorno=THISFORM.ValidaUsuario( ; THISFORM.txtUsuario.VALUE, ; THISFORM.txtContrasena.VALUE, ; THISFORM.nNivelInf, THISFORM.nNivelSup) IF THISFORM.lRetorno THISFORM.HIDE ELSE IF THISFORM.nIntentos < 3 IF EMPTY(THISFORM.txtUsuario.VALUE) THISFORM.txtUsuario.SETFOCUS ELSE THISFORM.txtContrasena.SETFOCUS ENDI ELSE =MESSAGEBOX('Acceso denegado',16,'Advertencia') THISFORM.HIDE ENDI ENDI ENDPROC PROCEDURE cmdcancelar.CLICK THISFORM.lRetorno=.F. THISFORM.HIDE ENDPROC ENDDEFINE * ---------------------------------------- *-- EndDefine: Login * ----------------------------------------Luis María Guayán
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.