Primer Commit
This commit is contained in:
136
DB/FUNCTIONS/FNC_INTERNAL_PROFILE.sql
Normal file
136
DB/FUNCTIONS/FNC_INTERNAL_PROFILE.sql
Normal 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;
|
||||
|
||||
/
|
||||
Reference in New Issue
Block a user