-- Start of DDL Script for Trigger SYS.AFTER_LOGON_BD
-- Generated 25-nov-2010 15:07:59 from SYS@vs08
DROP TRIGGER after_logon_bd;

CREATE OR REPLACE TRIGGER after_logon_bd
 AFTER
  LOGON
 ON DATABASE
DECLARE
  v_session  sys.GV$SESSION%rowtype;
  --instance   sys.v$instance.instance_name%type;
BEGIN
    -- select sys_context('USERENV','IP_ADDRESS') into ip from dual;
    --
    --instance := userenv('instance');
    --
    select * into v_session from gv$session where sid = userenv('sid') and inst_id = userenv('instance');
    --select * into v_session from gv$session  where audsid = userenv('SESSIONID') and OSUSER= SYS_CONTEXT('USERENV','OS_USER');
    --
    --raise_application_error('-20000',v_session.username||' '||v_session.inst_id);
    -- Verifica se o usuário de banco tem acesso
    IF (UPPER(v_session.username) NOT IN ('SYSTEM','SYS','ADMIN','DWADMIN','DBSNMP','SYSMAN')) then
    
       -- Verifica se o usuário de Sistema Operacional tem acesso - Funcionário com perfil de DBA/AD/DW
       If UPPER(v_session.osuser) NOT IN ('MARCO.LIMA','GABRIELA.MARQUES','YURI.ADAME', -- DBA
       'ANDERSON.RIBEIRO','DEIVISON.MUNIZ','JAQUELINE.GISMONTI','GUSTAVO.SILVA','ALINE.MAGALHAES','CHRISTIANO.MATOS','NATANAEL.LEITE') then
          -- Trava de usuário com problema
          if UPPER(v_session.username) in ('CONSULTA_DBSVS_WEB') then
             null;
          --Verifica se as conexões são provenientes dos servidores ANVSSDFxx
          elsif (upper(v_session.machine) like '%ANVSSDF%') then
             null;
          elsif (upper(v_session.terminal) like '%ANVSSDF%') then
             null;
          --Verifica se as conexões são provenientes dos servidores WWW1.ANVISA.GOV.BR
          elsif (upper(v_session.machine) like '%WWW1.ANVISA.GOV.BR%') then
             null;
          elsif (upper(v_session.terminal) like '%WWW1.ANVISA.GOV.BR%') then
             null;
          --Libera o acesso temporário de migração
          elsif (upper(v_session.machine) like '%WWW1N%') then
             null;
--          --Libera o acesso da máquina an041387 da usuaria Carolina.Pigret e da maquina AN042791 do Ricardo.Borges
--           elsif (upper(v_session.terminal) in ('AN041387','AN042791','AN057032','AN041386')) and  UPPER(v_session.osuser) IN ('CAROLINA.PINGRET','RICARDO.BORGES','MARCELO.ANGELO','FABIO.ALMEIDA') and upper(v_session.username) = 'CONSULTA_DBSVS' then
--             null;
          --Libera o acesso para os usuários MARCELO_ANGELO,NADIR_OGLIARI com conexão dedicada
          elsif UPPER(v_session.osuser) in ('MARCELO_ANGELO','NADIR_OGLIARI') and (upper(v_session.server) = 'DEDICATED') then
             null;
          elsif (upper(v_session.program) in ('JDBC THIN CLIENT')) and  UPPER(v_session.username) IN ('ETIQUETA_WEB') then
             null;                              
          --###############################################################
             --Libera o acesso da máquina gbt-02 Alessandro Mirante temporario
          --elsif v_session.machine in ('gbt-02.local') and  UPPER(v_session.username) IN ('CONS_EXTERNA') then
          --   null;
          --################################################################
          -- Acesso para o setor de Arrecadação do sistema SAT
          elsif UPPER(v_session.osuser) in ('FREDERICO.FERNANDES','JULIANA.QUARTIN','JORGE.NASCIMENTO') and (upper(v_session.username) = 'CADEMPRESA_WEB') then
             null;
          -- Libera o acesso para o usuário de banco CONS_PPS_DATAVISA
          elsif UPPER(v_session.osuser) in ('STELA.MELCHIOR','MARIA.VICENTE','CARLA.CRUZ','GUILHERME.BUSS','CARLOS.FORNAZIER','MARIO.CHAVES') 
          and (upper(v_session.username) = 'CONS_PPS_DATAVISA') then
             null;
          --Acesso para Sammed
          elsif (upper(v_session.username) = 'SAMMED_WEB') then
          null;
          -- Acesso para a GGREM
          elsif UPPER(v_session.osuser) in ('ALESANDRE.SANTOS') and (upper(v_session.username) = 'MON_WEB') then
             null;
          --Libera o acesso da máquina AN0431 para o acesso do CSS com ousuário CSS_DATAVISA
          elsif upper(v_session.terminal) = 'AN0431' and  UPPER(v_session.username) = 'CSS_DATAVISA' then
             null;
         
          --Verifica se as conexões são proveniente de um APLICATIVO autorizado
          elsif upper(v_session.program) in ('AGENDATEL.EXE','BAIXABBARRECADACAO.EXE','CODIVA_VS01.EXE','DIVA_VS01.EXE','FINANCEIROSIPAD.EXE',
                                             'INETINFO.EXE','ESTATPAFSEG.EXE','MONITORAMENTO.EXE','PRJ_INTERFACE_DBMON.EXE',
                                             'PDARF.EXE','UNICA.EXE','SNGPC.EXE','SIPAT.EXE') then
             null;
          --Elimina as conexões de usuários de SO desconhecidos
          elsif v_session.osuser is null then
             begin
                execute immediate 'ALTER SYSTEM KILL SESSION '||''''||v_session.sid||','||v_session.serial#||',@'||v_session.inst_id||''';';
             EXCEPTION
             when others then
                insert into admin.tb_after_logon values (v_session.OSUSER, v_session.PROGRAM, v_session.username, v_session.machine, v_session.terminal, v_session.logon_time,'Login-Anvisa-1.0');
                commit;
                raise_application_error('-20000','Acesso negado - 1.0!');
             end;
          --Elimina as conexões dos usuário DB*
          elsif (UPPER(v_session.username) like 'DB%') or (UPPER(v_session.username) in ('AD')) then
             begin
                execute immediate 'ALTER SYSTEM KILL SESSION '||''''||v_session.sid||','||v_session.serial#||',@'||v_session.inst_id||''';';
             EXCEPTION
             when others then
                insert into admin.tb_after_logon values (v_session.OSUSER, v_session.PROGRAM, v_session.username, v_session.machine, v_session.terminal, v_session.logon_time,'Login-Anvisa-1.1');
                commit;
               raise_application_error('-20000','Acesso negado - 1.1!');
             end;
          --Elimina as conexões não autorizadas
          else
             If (UPPER(v_session.osuser) NOT IN (
             /* ANALISTA DE SISTEMAS - ANVISA */
             'CARLOS.GONCALVES','DANIELLE.MACIEL','EWERTON.MARTINS','HONORIO.MARQUES','PEDRO.ALMEIDA',
             'PAULO.CESAR','NELCI.SANTOS','ORACLE','VERANGGE.LOPES','JORGE.CARVALHO',
             --/*ANALISTAS DA UNIMIX*/ 
             /* ANALISTA DE SISTEMAS - MIRANTE */
             'ADEMIR.JUNIOR','ALEXANDRE.MAXIMO','BRUNO.AMORIM','DIONE.OLIVEIRA','ROGERIO.MIARI','GLADSON.LIMA','MARCELO.RODRIGUES','WESLEY.MARINHO', 'ROBERTO.LUIZ','DARLAN.LISBOA','ERIC.SILVA','HELCIO.GONCALVES','RUZBEH.SHOKRANIAN','VICTOR.LUIZ','BRUNO.SANTOS','DIOGO.CORAZOLLA','PEDRO.ALMEIDA',
             'RENATO.VALE','DIVINO.JUNIOR','ULISSES.SOARES','LEO.MARRA','LEONARDO.OSOUZA','JOAO.CHAGAS','BRUNO.BEHMOIRAS','WALLACE.SANTOS','DAYSE.MAGALHAES','LAZARO.FREITAS','CLAUDIO.DASILVA','ALESSANDRO.LEITE','WILSON.BRITO','DAVID.PEREIRA','RAIMUNDA.CIRILO','HOSANA.MACHADO','FRANCISCO.ADEMILSON'
             /* DIVERSOS */)) then
                begin
                   execute immediate 'ALTER SYSTEM KILL SESSION '||''''||v_session.sid||','||v_session.serial#||',@'||v_session.inst_id||''';';
                EXCEPTION
                when others then
                   insert into admin.tb_after_logon values (v_session.OSUSER, v_session.PROGRAM, v_session.username, v_session.machine, v_session.terminal, v_session.logon_time,'Login-Anvisa-1.2');
                   commit;
                   --admin.send_mail('ORACLE','dba@anvisa.gov.br',instance||' - '||to_char(sysdate,'dd/mm/yyyy hh24:mi:ss')||' Login-Anvisa-1.1','Login: '||v_session.OSUSER||chr(13)||'Program: '||v_session.PROGRAM||chr(13)||'User DB: '||v_session.username||chr(13)||'Máquina: '||v_session.machine||chr(13)||'Máquina: '||v_session.terminal);
                   raise_application_error('-20000','Acesso negado! Favor entrar em contato com a GESIS para maiores informações. Ramal: 1133.');
                end;
             end if;
          end if;
       End if;
    END IF;
END;
/

-- End of DDL Script for Trigger SYS.AFTER_LOGON_BD


hostgator