Haciendo un login como la gente en Powerbuilder by Tux Merlin - Joomla-gnu.com www.joomla-gnu.com Vamos a ver cómo hacer un login como la gente para nuestro sistema Powerbuilder. Pero digamos primero qué es el login, logueo, registro, o como quieran llamarlo. El login es simplemente el proceso de autenticación del usuario en la base de datos del sistema. Esta autenticación le permite, dependiendo de los permisos, grabar nuevos datos, modificar los existentes o eliminarlos. ¿Es útil el login? Bajo cualquier punto de vista que se lo mire es más que útil ya que nos asegura que el usuario que estuvo o está interactuando con nuestros datos pertenece a nuestra red autorizada y no es un intruso. ¿Qué beneficios tiene loguearse? Además del antedicho, el login sirve en primera instancia para fijar rangos de privilegios. Esto es, podemos autorizar o no a ciertos usuarios o grupos de usuarios para que graben, modifiquen o borren datos, o en contrapartida bloquear ciertos procesos que queremos reservar solo para miembros privilegiados. Otra de las grandes utilidades es poder detectar quién fue el que borró, modificó o grabó cierto dato para efectuar correcciones a nivel código o a nivel personal. Para aprender más sobre autenticación o login vean esta artículo de wikipedia. A continuación les dejo un sencillo script de login explicado para Powerbuilder 11.5. Las características de este script son simples: permite validar a el usuario y le da tres intentos (o más, según configuremos) ante de "banearlo" o bloquearle el acceso. Esto último es útil cuando queremos evitar un ataque de fuerza bruta al login del sistema. Veamos el código: {codecitation style="brush:php;"}/* Script para validar el ingreso del usuario ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ by Moatsoft (c) 2009 Objeto: w_login --> cb_ingresar Evento: clicked() página 1 / 6 Haciendo un login como la gente en Powerbuilder by Tux Merlin - Joomla-gnu.com www.joomla-gnu.com Work: Valida el ingreso del usuario. Ver código. Call: desde App sistema luego de la conexión a la BD */ // Variables locales string s_mostrar // Variables de los permisos // i_bloqueo: es una variable para contar la cantidad de intentos de logueo y posterior bloqueo // i_desactivo: es para identificar si el usuario está "desactivado" o dado de baja en el sistema //por ejemplo un ex empleado int i_bloqueo, i_desactivo //Cargando datos en las variables SELECT id_user, // Código del Usuario user_name, // Nombre del Usuario user_pass, // Contraseña del Usuario user_nivel, // Nivel de acceso user_activo, // Usuario activo o no user_bloqueo // Usuario bloqueado o no // Cargamos todos los datos en variables globales lo que nos permitirá luego registrar el nombre del usuario página 2 / 6 Haciendo un login como la gente en Powerbuilder by Tux Merlin - Joomla-gnu.com www.joomla-gnu.com // o el dato que queramos en la BD para saber quién hizo la operación INTO :gi_iduser, // Variable global: código de usuario :gs_usuario, // Variable global: nombre de usuario :gs_password, // variable global contraseña :gs_pista, // variable global ayuda contraseña :gi_nivel, // Variable global: nivel de permisos :gb_activo, // Variable global: saber si está activo :i_bloqueo // Variable local: si está bloqueado o no FROM USUARIOS WHERE user_name=:sle_user.text; /*Reviso si el Select encontró el usuario. Sino lo encontró le doy 3 intentos sin decir que no existe para evitar la fuerza bruta. Si el usuario existe pero está bloqueado le mando la advertencia */ if gs_usuario="" then i_bloqueo=3 else if gb_activo=0 then if sle_pass.text=gs_password then página 3 / 6 Haciendo un login como la gente en Powerbuilder by Tux Merlin - Joomla-gnu.com www.joomla-gnu.com MessageBox("Aviso Importante", & "Su identificación es correcta pero su cuenta está desactivada.~n~rConsulte con su administrador", & StopSign!) else MessageBox("Aviso Importante", & "La contraseña que introdujo es inválida. ~n~rAdemás su cuenta está desactivada. ~n~rConsulte con su administrador", & StopSign!) end if halt end if end if // Conteo de intentos de logueo y actualización de tabla en caso de pasarse if ii_cuantosclick=i_bloqueo then messagebox("Aviso Importante","A superado el número de intentos. El Usuario ha sido bloqueado. Consulte con su administrador",StopSign!,Ok!) i_desactivo=0 // Si sobrepasó los intentos de login bloqueo el usuario UPDATE usuarios página 4 / 6 Haciendo un login como la gente en Powerbuilder by Tux Merlin - Joomla-gnu.com www.joomla-gnu.com SET user_activo=:i_desactivo WHERE user_name=:gs_usuario; commit; halt end if //Validando el usuario y la contraseña if sle_user.text<>"" and sle_pass.text<>"" then if sle_pass.text=gs_password then if gb_activo=1 then //Cierro la ventana de loguin close(w_login) // Abro la pantalla principal del sistema open(w_main) end if else ii_cuantosclick=ii_cuantosclick+1 s_mostrar="Usuario y/o contraseña no válida. Intento Nro: "+string(ii_cuantosclick)+" de "+string(i_bloqueo)+" intentos" messagebox("Aviso Importante",s_mostrar) sle_user.text="" página 5 / 6 Haciendo un login como la gente en Powerbuilder by Tux Merlin - Joomla-gnu.com www.joomla-gnu.com sle_pass.text="" sle_user.setfocus() end if else messagebox("Aviso Importante","Por favor ingrese sus datos",Question!) sle_user.setfocus( ) end if // Fin logueo {/codecitation} {xtypo_warning}Nota: las variables definidas como "ii_" deben estar declaradas como variables de instancia.{/xtypo_warning} página 6 / 6 Powered by TCPDF (www.tcpdf.org)