Primer Commit

This commit is contained in:
2023-06-08 11:55:59 -03:00
commit a269361962
432 changed files with 203156 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
--------------------------------------------------------
-- DDL for Function FNC_INTERNAL_PROFILE
--------------------------------------------------------
CREATE OR REPLACE EDITIONABLE FUNCTION "ENVX_OPER"."FNC_INTERNAL_PROFILE" (
pi_username IN VARCHAR2,
pi_email IN VARCHAR2,
pi_group_list IN CLOB
) RETURN CLOB AS
v_input_string VARCHAR2(4000) := pi_group_list;
v_output_json CLOB := '';
v_json_aux json;
v_domain_table sys.odcivarchar2list;
v_domain_name VARCHAR2(100) := '';
v_group_name VARCHAR2(100) := '';
v_hash_aux VARCHAR2(100);
v_user_id NUMBER := 0;
v_user VARCHAR2(500) := '';
v_context VARCHAR2(500) := '';
BEGIN
-- Documento JSON Principal de Usuario --
v_hash_aux := rawtohex(dbms_crypto.hash(
utl_raw.cast_to_raw(pi_username),
2
));
v_user_id := abs(TO_NUMBER(substr(
rawtohex(v_hash_aux),
1,
12
),
'XXXXXXXXXXXX'));
--v_user_id := v_user_id MOD 100000000;
v_user := regexp_substr(
pi_username,
'(.+)\s+(.+)?',
1,
1,
NULL,
1
);
v_context := regexp_substr(
pi_username,
'(.+)\s+(.+)?',
1,
1,
NULL,
2
);
v_output_json := '{"user":"'
|| v_user
|| '","userId":'
|| to_char(v_user_id)
|| ',"context":"'
|| v_context
|| '","email":"'
|| pi_email
|| '","idm":[';
-- Documento JSON Principal de Usuario --
-- Evalua que existan los grupos de LDAP --
IF pi_group_list IS NULL THEN
v_output_json := v_output_json || ']';
ELSE
v_domain_table := sys.odcivarchar2list();
v_domain_table.extend(regexp_count(
v_input_string,
','
) + 1);
-- Iteracion por los grupos del IDM --
FOR i IN 1..v_domain_table.count LOOP
v_domain_table(i) := regexp_substr(
v_input_string,
'[^,]+',
1,
i
);
v_domain_name := replace(
nvl(
regexp_substr(
v_domain_table(i),
'(.+)(\/)',
1,
1
),
'others'
),
'/',
''
);
v_group_name := regexp_substr(
v_domain_table(i),
'(.+\/)?(.+)',
1,
1,
NULL,
2
);
v_output_json := v_output_json
|| (
CASE
WHEN i != 1 THEN
','
ELSE ''
END
)
|| '{"domain":"'
|| v_domain_name
|| '","group":"'
|| v_group_name
|| '"}';
END LOOP;
v_output_json := v_output_json || ']';
-- Iteracion por los grupos del IDM --
END IF;
v_output_json := v_output_json || '}';
-- Evalua que existan los grupos de LDAP --
P_MANAGE_USERS(v_output_json);
RETURN v_output_json;
EXCEPTION
WHEN OTHERS THEN
RETURN 'ERR - '
|| sqlerrm
|| v_output_json;
END;
/