Haciendo un login como la gente en Powerbuilder

Anuncio
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)
Descargar