From 2854ff4a48a805260bd3071e1adb89f8ba4d03f1 Mon Sep 17 00:00:00 2001 From: Ole Martin Pettersen Date: Tue, 14 Jan 2025 11:59:36 +0100 Subject: [PATCH] loc --- .../ProjectExtensions/src/loc/_/en-us.js | 1 + .../ProjectExtensions/src/loc/myStrings.d.ts | 1 + .../ProjectExtensions/src/loc/nb-no.js | 1 + .../ProjectExtensions/src/projectSetup/index.ts | 17 ++++++++--------- .../ProjectExtensions/src/projectSetup/types.ts | 6 +++--- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/SharePointFramework/ProjectExtensions/src/loc/_/en-us.js b/SharePointFramework/ProjectExtensions/src/loc/_/en-us.js index 942216be5..a8abf2f7b 100644 --- a/SharePointFramework/ProjectExtensions/src/loc/_/en-us.js +++ b/SharePointFramework/ProjectExtensions/src/loc/_/en-us.js @@ -95,6 +95,7 @@ define([], function () { SummaryMessage: '{0} document(s) were copied to the project.', SyncLocalProjectPropertiesListText: 'Synchronizing list for project properties', TemplateConfigMessage: 'The selected project template **{0}** contains configuration for {1}. These are selected by default.', + PlannerMemberWarningMessage: 'You must be a member of the Microsoft 365 group to configure Planner. Please add yourself as a member or ask an administrator and try again.', TemplateLibrarySelectModalTitle: 'Hent dokumentmal', TemplateSelectDialogInfoText: 'Setting up the project takes about 10 minutes. Do not close the browser window while the site is being set up. It is not recommended to set up several sites at the same time.', TemplateSelectDialogSubmitButtonText: 'Set up the site', diff --git a/SharePointFramework/ProjectExtensions/src/loc/myStrings.d.ts b/SharePointFramework/ProjectExtensions/src/loc/myStrings.d.ts index d83c5bd95..97846c2e7 100644 --- a/SharePointFramework/ProjectExtensions/src/loc/myStrings.d.ts +++ b/SharePointFramework/ProjectExtensions/src/loc/myStrings.d.ts @@ -139,6 +139,7 @@ declare interface IProjectExtensionsStrings { SummaryMessage: string SyncLocalProjectPropertiesListText: string TemplateConfigMessage: string + PlannerMemberWarningMessage: string TemplateLibrarySelectModalTitle: string TemplateSelectDialogInfoText: string TemplateSelectDialogSubmitButtonText: string diff --git a/SharePointFramework/ProjectExtensions/src/loc/nb-no.js b/SharePointFramework/ProjectExtensions/src/loc/nb-no.js index e5f23bd58..51b074b3c 100644 --- a/SharePointFramework/ProjectExtensions/src/loc/nb-no.js +++ b/SharePointFramework/ProjectExtensions/src/loc/nb-no.js @@ -137,6 +137,7 @@ define([], function () { SummaryMessage: '{0} dokument(er) ble kopiert til prosjektområdet.', SyncLocalProjectPropertiesListText: 'Synkroniserer liste for prosjektegenskaper', TemplateConfigMessage: 'Den valgte prosjektmalen **{0}** inneholder konfigurasjon for {1}. Disse er valgt som standard.', + PlannerMemberWarningMessage: 'Du må være medlem av Microsoft 365 gruppa for å kunne konfigurere Planner. Vennligst legg deg selv til som medlem eller spør en administrator og prøv deretter igjen.', TemplateLibrarySelectModalTitle: 'Hent dokumentmal', TemplateSelectDialogInfoText: 'Oppsettet av prosjektområdet tar omtrent 10 minutter. Ikke lukk nettleservinduet mens området settes opp. Det anbefales ikke å sette opp flere områder samtidig.', TemplateSelectDialogSubmitButtonText: 'Sett opp området', diff --git a/SharePointFramework/ProjectExtensions/src/projectSetup/index.ts b/SharePointFramework/ProjectExtensions/src/projectSetup/index.ts index cea7ebeb1..e449a08f9 100644 --- a/SharePointFramework/ProjectExtensions/src/projectSetup/index.ts +++ b/SharePointFramework/ProjectExtensions/src/projectSetup/index.ts @@ -8,7 +8,7 @@ import { IMenuNode } from '@pnp/sp/navigation' import { format, getId } from '@uifabric/utilities' import * as strings from 'ProjectExtensionsStrings' import { SPDataAdapter } from 'data' -import { default as MSGraphHelper } from 'msgraph-helper' +import msgraph from 'msgraph-helper' import { ContentConfig, ListLogger, @@ -55,7 +55,7 @@ export default class ProjectSetup extends BaseApplicationCustomizer { this.sp = createSpfiInstance(this.context) - + await msgraph.Init(this.context.msGraphClientFactory) try { this._isSetup = await this._isProjectSetup() this._validation = await this._validateProjectSetup() @@ -109,9 +109,6 @@ export default class ProjectSetup extends BaseApplicationCustomizer { try { - await MSGraphHelper.Init(this.context.msGraphClientFactory) const data: IProjectSetupData = {} this._portalDataService = await new PortalDataService().configure({ spfxContext: this.context @@ -495,7 +490,11 @@ export default class ProjectSetup extends BaseApplicationCustomizer { const { isSiteAdmin, groupId, hubSiteId, siteId } = this.context.pageContext.legacyPageContext - return ProjectSetupValidation.UserIsOwnerOnly + + const members = await msgraph.Get(`groups/${groupId}/members`) + if (!members.some(({ mail }) => mail === this.context.pageContext.user.email)) { + return ProjectSetupValidation.UserNotGroupMember + } if (!isSiteAdmin) return ProjectSetupValidation.NotSiteAdmin if (!groupId) return ProjectSetupValidation.NoGroupId if (this.context.pageContext.web.language !== 1044) diff --git a/SharePointFramework/ProjectExtensions/src/projectSetup/types.ts b/SharePointFramework/ProjectExtensions/src/projectSetup/types.ts index 120383ff5..0f35c4d43 100644 --- a/SharePointFramework/ProjectExtensions/src/projectSetup/types.ts +++ b/SharePointFramework/ProjectExtensions/src/projectSetup/types.ts @@ -130,9 +130,9 @@ export enum ProjectSetupValidation { NotSiteAdmin, /** - * The current user is an owner of the group, - * but not a member. This will cause issues + * The current user is not a member of the Microsoft + * 365 group. This will cause issues * provisioning Planner resources. */ - UserIsOwnerOnly, + UserNotGroupMember, }