{ ----------------------------------------------------------------------------- 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 SELECT a.cod_perfil,count(*) INTO p_opcion,no_reg FROM seg0001 a,seg0005 b WHERE a.usuario = usuarios and a.cod_perfil = b.cod_perfil and b.programa = p_menu GROUP BY a.cod_perfil SELECT DISTINCT a.usuario FROM seg0001 a,seg0005 b WHERE a.usuario = usuarios and a.cod_perfil = b.cod_perfil and 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 FUNCTION usuarioSistema(xuser) DEFINE xuser,nombre,email STRING SELECT ISNULL(RTRIM(b.nom1_emp)||' '||RTRIM(b.apell1_emp),' '),a.email INTO nombre,email FROM seg0001 a,adtb00003 b WHERE a.usuario = xuser AND a.num_emp = b.num_emp RETURN nombre,email END FUNCTION