diff --git a/lib/providers/dingtalk.js b/lib/providers/dingtalk.js index 41ed35f..e8d9f14 100644 --- a/lib/providers/dingtalk.js +++ b/lib/providers/dingtalk.js @@ -94,7 +94,13 @@ async function fetchAllDepartments() { } log.info('Got', deps.department.length, 'departments'); - const depsMap = {}; + const depsMap = { + '1': { + name: 'Staff', + id: 1, + parentid: null, + }, + }; deps.department.forEach(d => { d.name = d.name.replace(/ \/ /g, ' - ').replace(/\//g, '&').trim(); depsMap[d.id] = d; @@ -110,7 +116,7 @@ async function fetchAllDepartments() { allDeps.forEach(d => { let obj = d; let dn = [ `ou=${obj.name}` ]; - while (obj.parentid !== 1) { + while (obj.parentid) { obj = depsMap[obj.parentid]; dn.push(`ou=${obj.name}`); } @@ -216,7 +222,7 @@ async function reloadFromDingtalkServer() { }); Object.values(allDepartmentsMap).forEach(dep => { - if (dep.parentid != 1) { + if (dep.parentid) { const parentDep = allDepartmentsMap[dep.parentid]; addMemberToGroup(allLDAPGroupsMap[dep.id], allLDAPGroupsMap[parentDep.id]); } @@ -260,7 +266,7 @@ async function reloadFromDingtalkServer() { u.department.forEach(depId => { let parentDep = allDepartmentsMap[depId]; // allLDAPGroupsMap[parentDep.id].attributes.member.push(personEntry.dn); - while (parentDep && parentDep.id !== 1) { + while (parentDep && parentDep.id) { addMemberToGroup(personEntry, allLDAPGroupsMap[parentDep.id]); // console.log('add member', personEntry.attributes.cn, 'to', allLDAPGroupsMap[parentDep.id].attributes.cn); parentDep = allDepartmentsMap[parentDep.parentid];