Files
MBS/PROYECTO/otrodir/seg000.4gl
T

70 lines
1.9 KiB
Plaintext

{
-----------------------------------------------------------------------------
PROGRAMA : SEG000
OBJETIVO : Controlar el acceso de los usuarios a los sistemas de la
Empresa.
PROGRAMADOR : Ing. Juan Soto
FECHA : Marzo 17, 1994.
-----------------------------------------------------------------------------
}
FUNCTION seg000(usuarios,opt,p_menu)
DEFINE opt,paso CHAR(2)
DEFINE luz CHAR(20)
DEFINE p_menu CHAR(50)
DEFINE usuarios,responsabilidad CHAR(50)
DEFINE no_reg,p_opcion SMALLINT
CALL startlog("seguridad.log")
# WHENEVER ERROR CONTINUE
OPTIONS
ERROR LINE 24
# BUSCA EL ROLE del usuario
SELECT a.nom_puesto INTO responsabilidad FROM seg0003 a
WHERE a.usuario = usuarios
IF UPSHIFT(responsabilidad) != 'ADMINISTRATOR' THEN
LET p_menu = p_menu CLIPPED
LET usuarios = usuarios CLIPPED
SELECT a.cod_perfil,count(*) INTO p_opcion,no_reg FROM seg0001 a,seg0005 b
WHERE RTRIM(a.usuario) = usuarios and
a.cod_perfil = b.cod_perfil and RTRIM(b.programa) = p_menu
GROUP BY a.cod_perfil
SELECT DISTINCT a.usuario FROM seg0001 a,seg0005 b
WHERE RTRIM(a.usuario) = usuarios and
a.cod_perfil = b.cod_perfil and
RTRIM(b.programa) = p_menu
IF status = notfound THEN
LET paso = "NO"
ELSE
LET paso = "SI"
END IF
END IF
IF UPSHIFT(responsabilidad) = 'ADMINISTRATOR' THEN
LET paso = "SI"
END IF
RETURN paso
END FUNCTION
FUNCTION integridad()
DEFINE numero_msg INT,
bandera SMALLINT
IF sqlca.sqlcode < 0 THEN
LET numero_msg = sqlca.sqlcode
CALL msg(numero_msg)
DISPLAY numero_msg AT 23,70
LET bandera = 1
LET status = 0
SLEEP 2
RETURN
END IF
RETURN
END FUNCTION