Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Function: esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying)
- DROP FUNCTION esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying);
- CREATE OR REPLACE FUNCTION esq_roles.fnc_login(
- p_usuario character varying,
- p_clave character varying,
- p_terminal character varying,
- p_sistema_operativo character varying,
- p_puerto character varying,
- p_direccion_ip character varying,
- p_navegador character varying,
- p_idsistema integer,
- p_clave_moodle character varying DEFAULT ''::character varying)
- RETURNS character varying AS
- $BODY$
- DECLARE
- v_reg bigint:=0;
- d_fecha TIMESTAMP;
- v_cedula VARCHAR;
- v_habilitado VARCHAR(1);
- v_password_changed VARCHAR(1);
- v_idpersonal BIGINT:=0;
- v_accesos_fallidos integer=0;
- v_bloqueado VARCHAR(1);
- v_clave_temp VARCHAR;
- v_retorno VARCHAR(50);
- v_dias_diff BIGINT:=0;
- v_veces INTEGER;
- v_msg varchar;
- v_auditoria_detalle varchar;
- v_equipo varchar;
- v_aux_auditoria VARCHAR;
- v_puede_loguear VARCHAR;
- BEGIN
- if p_usuario is null then
- RETURN 'Error:<p>El ingreso del usuario es obligatorio </p>';
- rollback;
- end if;
- SELECT COALESCE(count(datos.idpersonal),0) into v_reg
- FROM dblink(esq_roles.fnc_con_sga()::text,
- 'select p.idpersonal,p.correo_personal_institucional from esq_datos_personales.personal p'::text) datos( idpersonal bigint,correo_personal_institucional character varying(100))
- where correo_personal_institucional=trim(p_usuario) ;
- if v_reg >1 then
- RETURN 'Error:<p>Problemas al iniciar sesion con el usuario [<b>'|| p_usuario ||'</b>], solicite revision del mismo!</p>';
- rollback;
- end if;
- if v_reg =0 then
- RETURN 'Error:<p>El usuario [<b>'|| p_usuario ||'</b>],No existe!</p>';
- rollback;
- end if;
- SELECT datos.cedula,datos.idpersonal,datos.estado_usuario,datos.accesos_fallidos,datos.password_changed,datos.bloqueado
- into v_cedula, v_idpersonal,v_habilitado, v_accesos_fallidos, v_password_changed,v_bloqueado
- FROM dblink(esq_roles.fnc_con_sga()::text,
- 'select p.cedula,p.idpersonal,p.estado_usuario,accesos_fallidos,password_changed,bloqueado,correo_personal_institucional
- from esq_datos_personales.personal p'::text)
- datos(cedula character varying(100) , idpersonal bigint,estado_usuario character varying(1),accesos_fallidos integer,password_changed character varying(1),
- bloqueado character varying(1),correo_personal_institucional character varying(100))
- where correo_personal_institucional=trim(p_usuario);
- ---- VALIDACION DE ENCUESTA MOODLE ENFERMERIA
- ---- 5-MAYO-2017
- select COALESCE(count(t.idpersonal),0) into v_reg from esq_configuraciones.tbl_validacion t
- where t.idpersonal = v_idpersonal and t.id_tipo=1;
- if v_reg > 0 then
- SELECT COALESCE(count(datos.correo),0) into v_reg
- FROM dblink(esq_roles.fnc_con_moodle()::text,
- 'SELECT mdl_user.username, mdl_feedback_completed.feedback
- FROM
- public.mdl_user
- INNER JOIN public.mdl_feedback_completed ON (public.mdl_user.id = public.mdl_feedback_completed.userid)'::text)
- datos( correo character varying(100), id_encuesta bigint)
- where correo=trim(p_usuario) and id_encuesta = 344 ;
- /*
- if v_reg =0 then
- 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>';
- rollback;
- end if;
- */
- end if;
- ---- VALIDACION DE ENCUESTA MOODLE ENFERMERIA
- ---- 5-MAYO-2017
- if (v_bloqueado='S') then
- 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>';
- ROLLBACK;
- end if;
- if (v_habilitado = 'N') then
- 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>';
- ROLLBACK;
- end if;
- if(v_accesos_fallidos >= 6) then
- 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>';
- ROLLBACK;
- end if;
- select COUNT(c.id_personal) into v_veces from esq_roles.tbl_clave c where c.id_personal = v_idpersonal and c.estado = 'S';
- if (v_veces = 0 ) then
- 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 ;
- -- IF v_msg<> 'Ok.' THEN
- -- RETURN v_msg ;
- -- rollback;
- -- end if;
- -- v_msg:='';
- -- 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>';
- -- ROLLBACK;
- end if;
- 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';
- if(v_clave_temp = (p_clave)) then
- -- verificar que no este logueado en otro navegador
- -- Patricio Toala 12-abril-2016
- /* SELECT esq_roles.fnc_login_control(v_idpersonal, NULL) into v_puede_loguear;
- if(p_idsistema=5) then
- if v_puede_loguear <> 'ok' then
- return v_puede_loguear;
- rollback;
- end if;
- end if;*/
- --verificar que no este logueado en otro navegador
- -- actualiza la clave para el moodle en la tabla tbl_usuario_moodle
- if ( p_clave_moodle <> '' ) then
- PERFORM dblink(esq_roles.fnc_con_sga(),'update esq_datos_personales.tbl_usuario_moodle set clave = ''' || p_clave_moodle || ''' where id_personal =' || v_idpersonal );
- end if;
- v_retorno := 'Ok.';
- if (v_clave_temp = esq_roles.fnc_encripta_clave(v_cedula) or v_password_changed <> 'S') then
- PERFORM dblink(esq_roles.fnc_con_sga(),'UPDATE esq_datos_personales.personal set accesos_fallidos=0 where idpersonal= ' || v_idpersonal);
- else
- 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);
- end if;
- -- cambiar estado de personal.logueado de 0 a 1, y agregar la fecha y hora actual en fecha ultimo ingreso
- -- Patricio Toala 12-abril-2016
- --fin cambiar estado de personal.logueado de 0 a 1, y agregar la fecha y hora actual en fecha ultimo ingreso
- else
- v_retorno := 'no';
- PERFORM dblink(esq_roles.fnc_con_sga(),'UPDATE esq_datos_personales.personal set accesos_fallidos='|| v_accesos_fallidos+1 ||' where idpersonal=' || v_idpersonal);
- end if;
- --se verifica el estado de la contraseña
- --if (v_clave_temp = esq_roles.fnc_encripta_clave(v_cedula) or v_password_changed <> 'S') then
- -- 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>';
- -- ROLLBACK;
- --end if;
- v_auditoria_detalle := '1 idpersonal:ND:' || v_idpersonal || ':S/O:S/F:|' ||
- '2 usuario:ND:' || p_usuario || ':S/O:S/F:|' ||' ' ;
- -- *********** REGISTRAR AUDITORIA *****************
- v_equipo:=p_terminal || ':' || p_sistema_operativo || ':' || p_puerto || ':' ||p_direccion_ip || ':' ||p_navegador ;
- /* SELECT esq_auditorias.fnc_registra_auditoria(v_idpersonal, 1, 1, p_idsistema, v_equipo, v_auditoria_detalle) into v_aux_auditoria;
- if v_aux_auditoria <>'Ok.' then
- RAISE EXCEPTION 'ERROR AL GUARDAR VUELVA A INTENTAR.' ;
- ROLLBACK;
- end if;
- */
- RETURN v_retorno;
- COMMIT;
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100;
- ALTER FUNCTION esq_roles.fnc_login(character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying)
- OWNER TO adminsga;
- 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;
- 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;
- 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;
- 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