diff --git a/.changeset/ninety-dancers-bow.md b/.changeset/ninety-dancers-bow.md new file mode 100644 index 0000000000..dc8bd7b702 --- /dev/null +++ b/.changeset/ninety-dancers-bow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': patch +--- + +Add userExpand option to allow users to expand fields retrieved from the Graph API - for use in custom transformers diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index c00930d2ce..4f5d247a06 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -149,6 +149,7 @@ export type MicrosoftGraphProviderConfig = { clientId: string; clientSecret: string; userFilter?: string; + userExpand?: string[]; userGroupMemberFilter?: string; groupFilter?: string; }; @@ -178,6 +179,7 @@ export function readMicrosoftGraphOrg( client: MicrosoftGraphClient, tenantId: string, options: { + userExpand?: string[]; userFilter?: string; userGroupMemberFilter?: string; groupFilter?: string; diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts index 4d37e24632..c401bc2553 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts @@ -52,6 +52,12 @@ export type MicrosoftGraphProviderConfig = { * E.g. "accountEnabled eq true and userType eq 'member'" */ userFilter?: string; + /** + * The expand argument to apply to users. + * + * E.g. "manager" + */ + userExpand?: string[]; /** * The filter to apply to extract users by groups memberships. * diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts index b2845ac78d..58e60ab76a 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts @@ -85,6 +85,7 @@ export async function readMicrosoftGraphUsers( client: MicrosoftGraphClient, options: { userFilter?: string; + userExpand?: string[]; transformer?: UserTransformer; logger: Logger; }, @@ -99,6 +100,7 @@ export async function readMicrosoftGraphUsers( for await (const user of client.getUsers({ filter: options.userFilter, + expand: options.userExpand, })) { // Process all users in parallel, otherwise it can take quite some time promises.push( @@ -500,6 +502,7 @@ export async function readMicrosoftGraphOrg( client: MicrosoftGraphClient, tenantId: string, options: { + userExpand?: string[]; userFilter?: string; userGroupMemberFilter?: string; groupFilter?: string; @@ -524,6 +527,7 @@ export async function readMicrosoftGraphOrg( } else { const { users: usersWithFilter } = await readMicrosoftGraphUsers(client, { userFilter: options.userFilter, + userExpand: options.userExpand, transformer: options.userTransformer, logger: options.logger, }); diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts index 351a4983d9..e0e63d86fc 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts @@ -102,6 +102,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { client, provider.tenantId, { + userExpand: provider.userExpand, userFilter: provider.userFilter, userGroupMemberFilter: provider.userGroupMemberFilter, groupFilter: provider.groupFilter,