Advertisement
jzgeorge

Untitled

May 29th, 2018
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.66 KB | None | 0 0
  1.  
  2. DECLARE
  3. v_reg bigint:=0;
  4. d_fecha TIMESTAMP;
  5. v_cedula VARCHAR;
  6. v_habilitado VARCHAR(1);
  7. v_password_changed VARCHAR(1);
  8. v_idpersonal BIGINT:=0;
  9. v_accesos_fallidos integer=0;
  10. v_bloqueado VARCHAR(1);
  11. v_clave_temp VARCHAR;
  12. v_retorno VARCHAR(50);
  13. v_dias_diff BIGINT:=0;
  14. v_veces INTEGER;
  15. v_msg varchar;
  16. v_auditoria_detalle varchar;
  17. v_equipo varchar;
  18. v_aux_auditoria VARCHAR;
  19. v_puede_loguear VARCHAR;
  20. BEGIN
  21. if p_usuario is null then
  22. RETURN 'Error:<p>El ingreso del usuario es obligatorio </p>';
  23. rollback;
  24. end if;
  25.  
  26.  
  27.  
  28.  
  29. SELECT COALESCE(count(datos.idpersonal),0) into v_reg
  30. FROM dblink(esq_roles.fnc_con_sga()::text,
  31. 'select p.idpersonal,p.correo_personal_institucional from esq_datos_personales.personal p'::text) datos( idpersonal bigint,correo_personal_institucional character varying(100))
  32. where correo_personal_institucional=trim(p_usuario) ;
  33. if v_reg >1 then
  34. RETURN 'Error:<p>Problemas al iniciar sesion con el usuario [<b>'|| p_usuario ||'</b>], solicite revision del mismo!</p>';
  35. rollback;
  36. end if;
  37. if v_reg =0 then
  38. RETURN 'Error:<p>El usuario [<b>'|| p_usuario ||'</b>],No existe!</p>';
  39. rollback;
  40. end if;
  41. SELECT datos.cedula,datos.idpersonal,datos.estado_usuario,datos.accesos_fallidos,datos.password_changed,datos.bloqueado
  42. into v_cedula, v_idpersonal,v_habilitado, v_accesos_fallidos, v_password_changed,v_bloqueado
  43. FROM dblink(esq_roles.fnc_con_sga()::text,
  44. 'select p.cedula,p.idpersonal,p.estado_usuario,accesos_fallidos,password_changed,bloqueado,correo_personal_institucional
  45. from esq_datos_personales.personal p'::text)
  46. datos(cedula character varying(100) , idpersonal bigint,estado_usuario character varying(1),accesos_fallidos integer,password_changed character varying(1),
  47. bloqueado character varying(1),correo_personal_institucional character varying(100))
  48. where correo_personal_institucional=trim(p_usuario);
  49.  
  50. ---- VALIDACION DE ENCUESTA MOODLE ENFERMERIA
  51. ---- 5-MAYO-2017
  52.  
  53. select COALESCE(count(t.idpersonal),0) into v_reg from esq_configuraciones.tbl_validacion t
  54. where t.idpersonal = v_idpersonal and t.id_tipo=1;
  55.  
  56. if v_reg > 0 then
  57.  
  58. SELECT COALESCE(count(datos.correo),0) into v_reg
  59. FROM dblink(esq_roles.fnc_con_moodle()::text,
  60. 'SELECT mdl_user.username, mdl_feedback_completed.feedback
  61. FROM
  62. public.mdl_user
  63. INNER JOIN public.mdl_feedback_completed ON (public.mdl_user.id = public.mdl_feedback_completed.userid)'::text)
  64. datos( correo character varying(100), id_encuesta bigint)
  65. where correo=trim(p_usuario) and id_encuesta = 344 ;
  66. /*
  67. if v_reg =0 then
  68. 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>';
  69. rollback;
  70. end if;
  71. */
  72. end if;
  73. ---- VALIDACION DE ENCUESTA MOODLE ENFERMERIA
  74. ---- 5-MAYO-2017
  75.  
  76.  
  77.  
  78. if (v_bloqueado='S') then
  79. 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>';
  80. ROLLBACK;
  81. end if;
  82.  
  83. if (v_habilitado = 'N') then
  84. 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>';
  85. ROLLBACK;
  86. end if;
  87. --if(v_accesos_fallidos >= 6) then
  88. -- 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>';
  89. -- ROLLBACK;
  90. --end if;
  91.  
  92.  
  93. select COUNT(c.id_personal) into v_veces from esq_roles.tbl_clave c where c.id_personal = v_idpersonal and c.estado = 'S';
  94. if (v_veces = 0 ) then
  95. 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 ;
  96. -- IF v_msg<> 'Ok.' THEN
  97. -- RETURN v_msg ;
  98. -- rollback;
  99. -- end if;
  100. -- v_msg:='';
  101. -- 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>';
  102. -- ROLLBACK;
  103. end if;
  104.  
  105.  
  106. 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';
  107. if(v_clave_temp = (p_clave)) then
  108. -- verificar que no este logueado en otro navegador
  109. -- Patricio Toala 12-abril-2016
  110.  
  111. /* SELECT esq_roles.fnc_login_control(v_idpersonal, NULL) into v_puede_loguear;
  112.  
  113. if(p_idsistema=5) then
  114. if v_puede_loguear <> 'ok' then
  115. return v_puede_loguear;
  116. rollback;
  117. end if;
  118. end if;*/
  119. --verificar que no este logueado en otro navegador
  120.  
  121. -- actualiza la clave para el moodle en la tabla tbl_usuario_moodle
  122. if ( p_clave_moodle <> '' ) then
  123. PERFORM dblink(esq_roles.fnc_con_sga(),'update esq_datos_personales.tbl_usuario_moodle set clave = ''' || p_clave_moodle || ''' where id_personal =' || v_idpersonal );
  124. end if;
  125.  
  126.  
  127.  
  128. v_retorno := 'Ok.';
  129. if (v_clave_temp = esq_roles.fnc_encripta_clave(v_cedula) or v_password_changed <> 'S') then
  130. PERFORM dblink(esq_roles.fnc_con_sga(),'UPDATE esq_datos_personales.personal set accesos_fallidos=0 where idpersonal= ' || v_idpersonal);
  131. else
  132. 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);
  133. end if;
  134.  
  135. -- cambiar estado de personal.logueado de 0 a 1, y agregar la fecha y hora actual en fecha ultimo ingreso
  136. -- Patricio Toala 12-abril-2016
  137.  
  138. --fin cambiar estado de personal.logueado de 0 a 1, y agregar la fecha y hora actual en fecha ultimo ingreso
  139.  
  140. else
  141. v_retorno := 'Ok.';
  142. PERFORM dblink(esq_roles.fnc_con_sga(),'UPDATE esq_datos_personales.personal set accesos_fallidos='|| v_accesos_fallidos+1 ||' where idpersonal=' || v_idpersonal);
  143. end if;
  144.  
  145. --se verifica el estado de la contraseña
  146. --if (v_clave_temp = esq_roles.fnc_encripta_clave(v_cedula) or v_password_changed <> 'S') then
  147. -- 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>';
  148. -- ROLLBACK;
  149. --end if;
  150.  
  151. v_auditoria_detalle := '1 idpersonal:ND:' || v_idpersonal || ':S/O:S/F:|' ||
  152. '2 usuario:ND:' || p_usuario || ':S/O:S/F:|' ||' ' ;
  153. -- *********** REGISTRAR AUDITORIA *****************
  154. v_equipo:=p_terminal || ':' || p_sistema_operativo || ':' || p_puerto || ':' ||p_direccion_ip || ':' ||p_navegador ;
  155.  
  156. /* SELECT esq_auditorias.fnc_registra_auditoria(v_idpersonal, 1, 1, p_idsistema, v_equipo, v_auditoria_detalle) into v_aux_auditoria;
  157.  
  158. if v_aux_auditoria <>'Ok.' then
  159. RAISE EXCEPTION 'ERROR AL GUARDAR VUELVA A INTENTAR.' ;
  160. ROLLBACK;
  161. end if;
  162. */
  163.  
  164. RETURN v_retorno;
  165. COMMIT;
  166.  
  167.  
  168.  
  169.  
  170. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement