From 8541a4252be18ac2b80e767b865576b0b8ada37f Mon Sep 17 00:00:00 2001 From: Vincent Salucci <26154748+vincentsalucci@users.noreply.github.com> Date: Fri, 10 Jun 2022 11:25:15 -0500 Subject: [PATCH] [EC-250] AU group next link (#272) --- src/services/azure-directory.service.ts | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/services/azure-directory.service.ts b/src/services/azure-directory.service.ts index c381eeef..4a278296 100644 --- a/src/services/azure-directory.service.ts +++ b/src/services/azure-directory.service.ts @@ -201,15 +201,29 @@ export class AzureDirectoryService extends BaseDirectoryService implements IDire } const set = new Set(); + const entryIds = new Set(); const pieces = parts[1].split(","); + if (keyword === "excludeadministrativeunit" || keyword === "includeadministrativeunit") { for (const p of pieces) { - const auMembers = await this.client + let auMembers = await this.client .api(`https://graph.microsoft.com/v1.0/directory/administrativeUnits/${p}/members`) .get(); - for (const auMember of auMembers.value) { - if (auMember["@odata.type"] === "#microsoft.graph.group") { - set.add(auMember.displayName.toLowerCase()); + // eslint-disable-next-line + while (true) { + for (const auMember of auMembers.value) { + const groupId = auMember.id; + if (auMember["@odata.type"] === "#microsoft.graph.group" && !entryIds.has(groupId)) { + set.add(auMember.displayName.toLowerCase()); + entryIds.add(groupId); + } + } + + if (auMembers[NextLink] == null) { + break; + } else { + const nextLinkReq = this.client.api(auMembers[NextLink]); + auMembers = await nextLinkReq.get(); } } }