Advertisement
jzgeorge

asdasdasd

Aug 3rd, 2017
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Function: esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying)
  2.  
  3. DROP FUNCTION esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying);
  4.  
  5. CREATE OR REPLACE FUNCTION esq_roles.fnc_login(
  6.     p_usuario character varying,
  7.     p_clave character varying,
  8.     p_terminal character varying,
  9.     p_sistema_operativo character varying,
  10.     p_puerto character varying,
  11.     p_direccion_ip character varying,
  12.     p_navegador character varying,
  13.     p_idsistema integer,
  14.     p_clave_moodle character varying DEFAULT ''::character varying)
  15.   RETURNS character varying AS
  16. $BODY$
  17. DECLARE
  18.     v_reg  bigint:=0;
  19.     d_fecha TIMESTAMP;
  20.     v_cedula VARCHAR;
  21.     v_habilitado VARCHAR(1);
  22.     v_password_changed VARCHAR(1);
  23.     v_idpersonal BIGINT:=0;
  24.     v_accesos_fallidos integer=0;
  25.     v_bloqueado VARCHAR(1);
  26.     v_clave_temp VARCHAR;
  27.     v_retorno VARCHAR(50);
  28.     v_dias_diff BIGINT:=0;
  29.     v_veces INTEGER;
  30.     v_msg varchar;
  31.     v_auditoria_detalle varchar;
  32.     v_equipo varchar;
  33.     v_aux_auditoria VARCHAR;
  34.     v_puede_loguear VARCHAR;
  35. BEGIN
  36.  if p_usuario is null then
  37.     RETURN 'Error:<p>El ingreso del usuario es obligatorio </p>';    
  38.     rollback;
  39.   end if;  
  40.  
  41.  
  42.  
  43.  
  44.   SELECT COALESCE(count(datos.idpersonal),0) into v_reg
  45.   FROM dblink(esq_roles.fnc_con_sga()::text,
  46.   'select p.idpersonal,p.correo_personal_institucional  from esq_datos_personales.personal p'::text) datos( idpersonal bigint,correo_personal_institucional character varying(100))
  47.   where correo_personal_institucional=trim(p_usuario) ;
  48.   if v_reg >1 then
  49.         RETURN 'Error:<p>Problemas al iniciar sesion con el usuario [<b>'|| p_usuario ||'</b>], solicite revision del mismo!</p>';        
  50.         rollback;
  51.   end if;
  52.   if v_reg =0 then
  53.         RETURN 'Error:<p>El usuario [<b>'|| p_usuario ||'</b>],No existe!</p>';        
  54.         rollback;
  55.   end if;
  56.   SELECT  datos.cedula,datos.idpersonal,datos.estado_usuario,datos.accesos_fallidos,datos.password_changed,datos.bloqueado
  57.   into v_cedula, v_idpersonal,v_habilitado, v_accesos_fallidos, v_password_changed,v_bloqueado
  58.   FROM dblink(esq_roles.fnc_con_sga()::text,
  59.   'select p.cedula,p.idpersonal,p.estado_usuario,accesos_fallidos,password_changed,bloqueado,correo_personal_institucional
  60.  from esq_datos_personales.personal p'::text)    
  61.   datos(cedula character varying(100)  , idpersonal bigint,estado_usuario character varying(1),accesos_fallidos integer,password_changed character varying(1),
  62.   bloqueado character varying(1),correo_personal_institucional character varying(100))
  63.   where correo_personal_institucional=trim(p_usuario);
  64.  
  65.     ---- VALIDACION DE ENCUESTA MOODLE ENFERMERIA
  66.   ---- 5-MAYO-2017
  67.  
  68.   select COALESCE(count(t.idpersonal),0) into v_reg from esq_configuraciones.tbl_validacion t
  69.   where t.idpersonal = v_idpersonal and t.id_tipo=1;
  70.  
  71.   if v_reg > 0 then
  72.  
  73.     SELECT COALESCE(count(datos.correo),0) into v_reg
  74.     FROM dblink(esq_roles.fnc_con_moodle()::text,
  75.     'SELECT mdl_user.username, mdl_feedback_completed.feedback
  76.    FROM
  77.      public.mdl_user
  78.      INNER JOIN public.mdl_feedback_completed ON (public.mdl_user.id = public.mdl_feedback_completed.userid)'::text)
  79.     datos( correo character varying(100), id_encuesta bigint)
  80.     where correo=trim(p_usuario) and id_encuesta = 344 ;
  81.     /*
  82.     if v_reg =0 then       
  83.           RETURN 'Error:<p>El usuario [<b>'|| p_usuario ||'</b>], Debe realizar la evaluación de la carrera de Enfermería.ingrese a www.evirtual.utm.edu.ec !</p>';        
  84.           rollback;
  85.     end if;
  86.     */
  87.   end if;  
  88.   ---- VALIDACION DE ENCUESTA MOODLE ENFERMERIA
  89.   ---- 5-MAYO-2017
  90.  
  91.  
  92.  
  93.   if (v_bloqueado='S') then
  94.     return 'Error:<p>Cuenta de usuario [<b>'|| p_usuario || '</b>] <br><br><b><font color = #FF001C>Bloqueada por disposicion de las autoridades</font></b>.</p>';    
  95.     ROLLBACK;
  96.   end if;  
  97.  
  98.   if (v_habilitado = 'N') then
  99.      return 'Error:<p>Cuenta de usuario [<b> '|| v_habilitado || '</b>] se encuentra <b><font color = #FF001C>deshabilitada</font></b>.</p><p>Si es estudiante solicite reinicio clave en la secretaria de su Escuela </p>';    
  100.      ROLLBACK;
  101.  end if;
  102.  if(v_accesos_fallidos >= 6) then
  103.      return 'Alerta: <p>Hemos detectado varios intentos de <b><font color = #FF001C>accesos fallidos</font></b> desde la cuenta de usuario [<b>'|| p_usuario || '</b>], debe cambiar su clave o si es estudiante tambien puede solicitar reinicio clave en la secretaria de su Escuela </p>';    
  104.      ROLLBACK;
  105.  end if;
  106.  
  107.  
  108.  select COUNT(c.id_personal) into v_veces from esq_roles.tbl_clave c where c.id_personal = v_idpersonal and c.estado = 'S';
  109.  if (v_veces = 0 ) then
  110.     SELECT esq_roles.fnc_regenera_clave(p_usuario, v_idpersonal, p_terminal, p_sistema_operativo, p_puerto, p_direccion_ip, p_navegador, p_idsistema) into v_msg  ;
  111.  --                 IF v_msg<> 'Ok.' THEN
  112.   --                RETURN v_msg ;
  113.   --                rollback;  
  114.   --              end if;
  115.    --             v_msg:='';    
  116.   --   RETURN 'Error:<p>Por inconvenientes con los datos de la cuenta de usuario [<b>'|| p_usuario|| '</b>] hemos reiniciado la clave de acceso al numero de cedula del usuario titular, ingrese nuevamente.</p>';    
  117.   --   ROLLBACK;
  118.  end if;
  119.  
  120.  
  121. select c.clave ,date(now())- date(c.fecha) into v_clave_temp,v_dias_diff  from esq_roles.tbl_clave c where c.id_personal = v_idpersonal and c.estado = 'S';
  122. if(v_clave_temp = (p_clave)) then
  123.         -- verificar que no este logueado en otro navegador
  124.         -- Patricio Toala 12-abril-2016
  125.      
  126.     /*  SELECT esq_roles.fnc_login_control(v_idpersonal, NULL) into v_puede_loguear;
  127.        
  128.         if(p_idsistema=5) then
  129.         if v_puede_loguear <> 'ok' then
  130.             return v_puede_loguear;
  131.             rollback;
  132.          end if;
  133.         end if;*/
  134.           --verificar que no este logueado en otro navegador  
  135.          
  136.             -- actualiza la clave para el moodle en la tabla tbl_usuario_moodle  
  137.           if ( p_clave_moodle <> '' ) then                                      
  138.                 PERFORM dblink(esq_roles.fnc_con_sga(),'update esq_datos_personales.tbl_usuario_moodle set clave = ''' || p_clave_moodle || ''' where id_personal =' || v_idpersonal );            
  139.           end if;
  140.          
  141.            
  142.          
  143.           v_retorno := 'Ok.';
  144.           if (v_clave_temp = esq_roles.fnc_encripta_clave(v_cedula) or v_password_changed <> 'S') then
  145.             PERFORM dblink(esq_roles.fnc_con_sga(),'UPDATE esq_datos_personales.personal set accesos_fallidos=0 where idpersonal= ' || v_idpersonal);
  146.           else
  147.             PERFORM dblink(esq_roles.fnc_con_sga(),'UPDATE esq_datos_personales.personal set accesos_fallidos=0, logueado = 1, fecha_ultimo_ingreso = CURRENT_TIMESTAMP where idpersonal= ' || v_idpersonal);
  148.           end if;                  
  149.        
  150.           -- cambiar estado de personal.logueado de 0 a 1, y agregar la fecha y hora actual en fecha ultimo ingreso  
  151.           -- Patricio Toala 12-abril-2016
  152.    
  153.           --fin cambiar estado de personal.logueado de 0 a 1, y agregar la fecha y hora actual en fecha ultimo ingreso    
  154.        
  155.  else
  156.         v_retorno := 'no';
  157.         PERFORM dblink(esq_roles.fnc_con_sga(),'UPDATE esq_datos_personales.personal set accesos_fallidos='|| v_accesos_fallidos+1 ||' where idpersonal=' || v_idpersonal);
  158.  end if;
  159.  
  160. --se verifica el estado de la contraseña
  161.  --if (v_clave_temp = esq_roles.fnc_encripta_clave(v_cedula) or v_password_changed <> 'S') then
  162.     -- return 'Advertencia: <p>Debe <b>cambiar</b> la clave de acceso a la cuenta de usuario [<b>' || p_usuario || '</b>], acepte para abrir el formulario.</p>';
  163.   --   ROLLBACK;
  164.  --end if;
  165.  
  166.  v_auditoria_detalle := '1 idpersonal:ND:' || v_idpersonal || ':S/O:S/F:|' ||                            
  167.                             '2 usuario:ND:' || p_usuario || ':S/O:S/F:|' ||' ' ;
  168.      -- *********** REGISTRAR AUDITORIA *****************
  169.     v_equipo:=p_terminal || ':' || p_sistema_operativo || ':' || p_puerto || ':' ||p_direccion_ip || ':' ||p_navegador ;
  170.  
  171.   /*   SELECT esq_auditorias.fnc_registra_auditoria(v_idpersonal, 1, 1, p_idsistema, v_equipo, v_auditoria_detalle) into v_aux_auditoria;  
  172.        
  173.      if v_aux_auditoria <>'Ok.' then
  174.         RAISE EXCEPTION 'ERROR AL GUARDAR VUELVA A INTENTAR.' ;
  175.         ROLLBACK;
  176.      end if;
  177. */
  178.  
  179.  RETURN v_retorno;
  180.  COMMIT;
  181.  
  182.  
  183.  
  184.  
  185. END;
  186. $BODY$
  187.   LANGUAGE plpgsql VOLATILE
  188.   COST 100;
  189. ALTER FUNCTION esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying)
  190.   OWNER TO adminsga;
  191. GRANT EXECUTE ON FUNCTION esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying) TO adminsga;
  192. GRANT EXECUTE ON FUNCTION esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying) TO public;
  193. GRANT EXECUTE ON FUNCTION esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying) TO sistemasga;
  194. GRANT EXECUTE ON FUNCTION esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying) TO ceac_analitico;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement