//Extract last cn from DN. var input=extractCN(input); return input; function extractCN(userDN) { var result = []; var regexCN = /cn=(.*?),/m; try { var cnMatch = regexCN.exec(userDN); var userCN = cnMatch[1]; result.push({ key: userDN, value: userCN }); } catch (error) { return error; } return result; } //Get localization from eDir attributes like nrfLocalizedDescr or nrfLocalizedName //Returns "de" localization if aveilable. If not - returns "en" let res=getAvailableLocalization(input,"de","en"); if(res && res.length>0){ return res.toString(); } return input; function getAvailableLocalization(localString, firstLocalization, secondLocalization) { var res = "" var primaryLocalization = getLocalization(localString, firstLocalization) if (primaryLocalization && primaryLocalization.length > 0) { res = primaryLocalization; } else { var secondaryLocalization = getLocalization(localString, secondLocalization) if (secondaryLocalization && secondaryLocalization.length > 0) { res = secondaryLocalization; } } return res; } function getLocalization(localizedAttr, localization) { if (localizedAttr && localizedAttr.length > 0) { try { var locz = localizedAttr.split('|'); for (i in locz) { var currentLocalozation = locz[i].split("~"); if (currentLocalozation[0] === localization) { return [currentLocalozation[1]]; } } } catch (e) { } } } //Parse user DNs from XML like /* 20220514095402Z 498765468498bdfgkjdfgn6454 cn=ysommer,ou=users,o=data approved 20220515095402Z cn=afuhrmann,ou=users,o=data denied 20220515255402Z 20220531184746Z */ //AVAILABLE since ACD v.3.2!!! due to returning array of objects- result.push({key:userDN, value:userCN}) //ACD of older varsions have to return string only! var input=extractDN(input); return input; function extractDN(XMLtext) { var result = []; var regexApprover = /(.*?)<\/user>/m; var regexCN=/cn=(.*?),/m; try { var splitVal = XMLtext.split(""); for (var j = 0; j < splitVal.length - 1; j++) { path = splitVal[j]; var approverMatch = regexApprover.exec(path); var userDN = approverMatch[1]; var cnMatch = regexCN.exec(userDN); var userCN = cnMatch[1]; result.push({key:userDN, value:userCN}); } } catch (error) { return error; } return result; } //Parse DNs fron JSON of format: {"reason":"GN-USR-Identity - orgunit add L40","approver":"cn=mlang,ou=users,o=data"}. "approver" may contain either string or array of strings //AVAILABLE since ACD v.3.2!!! due to returning array of objects- result.push({key:userDN, value:userCN}) //ACD of older varsions have to return string only! var input=extractDNfromJSON(input); return input; function extractDNfromJSON(nrfDescription) { var result = []; try { //console.log("Description: "+ nrfDescription) var approveJSON = JSON.parse(nrfDescription); var approvers = []; approvers.push(approveJSON.approver); for (i in approvers) { var regexCN=/cn=(.*?),/m; if (typeof approvers[i] !== "string") { for (j in approvers[i]) { var cnMatch = regexCN.exec(approvers[i][j]); var userCN = cnMatch[1]; result.push({key:approvers[i][j], value:userCN}); } } else { var cnMatch = regexCN.exec(approvers[i]); var userCN = cnMatch[1]; result.push({key:approvers[i], value:userCN}); } } } catch (e) { console.log("nrfDescription: "+ nrfDescription) console.log(e); } return result; }