From b25f2e9be3868e1869daee8c230aa83c96747377 Mon Sep 17 00:00:00 2001 From: Alex Zaw Date: Wed, 25 Feb 2026 23:06:50 +0000 Subject: [PATCH] Update Function ES_GET_IBM_I_USER_INFO --- .../Functions/ES_GET_IBM_I_USER_INFO.sql | 123 +++++++++++++++++- 1 file changed, 122 insertions(+), 1 deletion(-) diff --git a/SAILPOINT/Functions/ES_GET_IBM_I_USER_INFO.sql b/SAILPOINT/Functions/ES_GET_IBM_I_USER_INFO.sql index e798a1d..6afd988 100644 --- a/SAILPOINT/Functions/ES_GET_IBM_I_USER_INFO.sql +++ b/SAILPOINT/Functions/ES_GET_IBM_I_USER_INFO.sql @@ -1 +1,122 @@ -@@\@^@ % %@@@@Kmmmmm@M@ %mm@M]@@@@@]@ %@M]@@@ %@@ %@K@ %@@ %@@@ %@@@@ %@@ %@@@@~@\@k@ %@~@\@k@ %@~@\@k@ %@~@\@k@ %@~@Mk@k@]@k@ %@~@\@k@ %@~@\@k@ %@~@\@@@ %@ %@@@@@ %@ %@m@@M@@]@^@ %@mmm@@^@ %@mmm@@M@@]@^@ %@mm@@M@@]@^@ %``@Á@@@ %@@@@ %mmm@~@mm@k@ %m@~@m@k@ %mm@~@m@k@ %mmm@~@mm@^@ %@ %M@ %@m@M@ %}}@@}}@k@}ɕ}@@m@M@ %}⣁}@@m@k@ %}Ö}@@mmm@k@ %}}@@mmm@k@ %}}@@mm@k@ %}㉔}@@m@ %]@ %]@]@^@ %@^@ %@ %@M@ %m@M@ %}}@z@}}@k@}}@@M@ %@m@M@ %m@M@ %}Ʉ}@@m@k@ %}ą}@@m@k@ %}}@@@k@ %}≇֕}@@m@k@ %}ɕ}@@ %mmmm@k@ %}Ó}@@mm@k@ %}}@@m@M@@@M@ %@]@ %@@M@ %@K@m@M@ %m@k@}@}@]@ %]@ %@@M@@]@@@@ %@@M@@]@Ln@}}@]@k@ %}י}@@mm@k@ %}Ǚ}@@ %mm@k@ %}È}@@mm@k@ %}ŧ}@@mm@k@ %}䕣צŧ}@@ %mmm@k@ %}ŧƓ}@@mmm@k@ %}ŔՖ}@@m@M@@K@ %mmm@M@m@]@k@ %}[K}@]@@@k@ %}ą}@@mm@k@ %}ؤ}@@mm@k@ %}ؤ}@@mm@k@ %}ĉ}@@m@k@ %}}@@mm@k@ %}}@@mm@k@ %}}@@mm@k@ %}Å}@@ %mm@k@ %}Ӆ}@@mmm@k@ %}Ӆ}@@mmm@k@ %}צԇ}@@mm@ %]@@@ %]@ %@@K@mm@ %@M@@M@ % \ No newline at end of file +SET PATH *LIBL ; + +CREATE OR REPLACE FUNCTION SAILPOINT.ES_GET_IBM_I_USER_INFO ( + NAME_OR_ID VARCHAR(60) DEFAULT NULL ) + RETURNS CLOB(2147483647) + LANGUAGE SQL + SPECIFIC SAILPOINT.ESRTVIUSRI + NOT DETERMINISTIC + MODIFIES SQL DATA + CALLED ON NULL INPUT + NOT FENCED + SET OPTION ALWBLK = *ALLREAD , + ALWCPYDTA = *OPTIMIZE , + COMMIT = *NONE , + DBGVIEW = *SOURCE , + DECRESULT = (31, 31, 00) , + DYNDFTCOL = *NO , + DYNUSRPRF = *OWNER , + SRTSEQ = *HEX + BEGIN +DECLARE CONTINUE HANDLER FOR SQLEXCEPTION +BEGIN +DECLARE V_SQLSTATE CHAR ( 5 ) ; +DECLARE V_DB2_RETURN_CODE INT ; +DECLARE V_DB2_MESSAGE_ID CHAR ( 7 ) ; +DECLARE V_ERROR_MESSAGE CLOB ( 2048 ) ; +-- Capture diagnostic info +GET DIAGNOSTICS CONDITION 1 +V_DB2_RETURN_CODE = DB2_RETURNED_SQLCODE , +V_SQLSTATE = RETURNED_SQLSTATE , +V_ERROR_MESSAGE = MESSAGE_TEXT , +V_DB2_MESSAGE_ID = DB2_MESSAGE_ID ; +RETURN +( +VALUES JSON_OBJECT ( +'success' VALUE 'false' , 'SQLInfo' VALUE JSON_OBJECT ( +'SQLState' VALUE V_SQLSTATE , +'SQLCode' VALUE V_DB2_RETURN_CODE , +'messageID' VALUE V_DB2_MESSAGE_ID , +'message' VALUE V_ERROR_MESSAGE , +'currentTimestamp' VALUE CURRENT_TIMESTAMP +) +) ) ; +END ; +RETURN +COALESCE ( +JSON_OBJECT ( +'status' : 'success' , 'data' VALUE ( +SELECT JSON_ARRAYAGG ( +JSON_OBJECT ( +'userId' VALUE AUTHORIZATION_NAME , +'textDescription' VALUE TEXT_DESCRIPTION , +'status' VALUE STATUS , +'previousSignOn' VALUE PREVIOUS_SIGNON , +'signonInvalidAttempts' VALUE +SIGN_ON_ATTEMPTS_NOT_VALID , +'userClass' VALUE USER_CLASS_NAME , +'specialAuths' VALUE JSON_ARRAY ( SELECT TRIM ( +FRAGMENT ) +FROM TABLE ( +CISTOOLS . SPLIT_STRING ( +SPECIAL_AUTHORITIES , ' ' ) +) +WHERE TRIM ( FRAGMENT ) IS NOT NULL +AND TRIM ( FRAGMENT ) <> '' ) , +'groupProfile' VALUE GROUP_PROFILE_NAME , +'supplementalGroups' VALUE +SUPPLEMENTAL_GROUP_LIST , +'passwordChanged' VALUE PASSWORD_CHANGE_DATE , +'pwExpires' VALUE DATE_PASSWORD_EXPIRES , +'daysUntilPwExpires' VALUE +DAYS_UNTIL_PASSWORD_EXPIRES , +'pwExpireFlag' VALUE SET_PASSWORD_TO_EXPIRE , +'userEmpNo' VALUE JSON_QUERY ( SAILPOINT . +ES_GET_EMPLOYEE_NUMBER ( AUTHORIZATION_NAME ) , +'$.data' ) FORMAT JSON , +'jobDesc' VALUE JOB_DESCRIPTION_NAME , +'msgQueue' VALUE MESSAGE_QUEUE_NAME , +'outQueue' VALUE OUTPUT_QUEUE_NAME , +'homeDir' VALUE HOME_DIRECTORY , +'locale' VALUE LOCALE_PATH_NAME , +'uid' VALUE USER_ID_NUMBER , +'gid' VALUE GROUP_ID_NUMBER , +'digitalCert' VALUE +DIGITAL_CERTIFICATE_INDICATOR , +'pwLevel01' VALUE PASSWORD_LEVEL_0_1 , +'pwLevel23' VALUE PASSWORD_LEVEL_2_3 , +'localPwMgmt' VALUE LOCAL_PASSWORD_MANAGEMENT +) FORMAT JSON +) +FROM QSYS2 . USER_INFO_BASIC +WHERE ( LOCATE ( +UPPER ( +TRIM ( +IFNULL ( NAME_OR_ID , AUTHORIZATION_NAME ) ) +) , UPPER ( AUTHORIZATION_NAME ) ) > 0 +OR LOCATE ( +UPPER ( +TRIM ( +IFNULL ( NAME_OR_ID , AUTHORIZATION_NAME ) ) +) , UPPER ( TEXT_DESCRIPTION ) ) > 0 ) ) FORMAT JSON +) , JSON_OBJECT ( +'success' VALUE 'false' , 'SQLInfo' VALUE JSON_OBJECT ( +'messageID' VALUE 'SQL02000' , +'message' VALUE 'Requested user not found ' , +'currentTimestamp' : CURRENT_TIMESTAMP +) +) ) ; +END ; + +GRANT ALTER , EXECUTE +ON SPECIFIC FUNCTION SAILPOINT.ESRTVIUSRI +TO AMAPICS WITH GRANT OPTION ; + +GRANT EXECUTE +ON SPECIFIC FUNCTION SAILPOINT.ESRTVIUSRI +TO PUBLIC ; + +GRANT ALTER , EXECUTE +ON SPECIFIC FUNCTION SAILPOINT.ESRTVIUSRI +TO QSECOFR WITH GRANT OPTION ; +