@pnp/cli-microsoft365 6.9.0-beta.6a23aba → 6.9.0-beta.8393174
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/Dockerfile +12 -19
- package/.devcontainer/devcontainer.json +24 -17
- package/Dockerfile +3 -1
- package/dist/Auth.js +2 -8
- package/dist/AuthServer.js +2 -4
- package/dist/cli/Cli.js +16 -0
- package/dist/m365/aad/commands/app/app-add.js +258 -249
- package/dist/m365/aad/commands/app/app-get.js +65 -62
- package/dist/m365/aad/commands/app/app-remove.js +22 -23
- package/dist/m365/aad/commands/app/app-role-add.js +35 -34
- package/dist/m365/aad/commands/app/app-role-list.js +22 -23
- package/dist/m365/aad/commands/app/app-role-remove.js +76 -73
- package/dist/m365/aad/commands/app/app-set.js +103 -103
- package/dist/m365/aad/commands/approleassignment/approleassignment-add.js +16 -14
- package/dist/m365/aad/commands/approleassignment/approleassignment-list.js +43 -52
- package/dist/m365/aad/commands/approleassignment/approleassignment-remove.js +20 -16
- package/dist/m365/aad/commands/o365group/o365group-add.js +40 -37
- package/dist/m365/aad/commands/o365group/o365group-conversation-post-list.js +7 -6
- package/dist/m365/aad/commands/o365group/o365group-list.js +6 -11
- package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-clear.js +7 -8
- package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-restore.js +23 -24
- package/dist/m365/aad/commands/o365group/o365group-set.js +15 -20
- package/dist/m365/aad/commands/o365group/o365group-teamify.js +15 -16
- package/dist/m365/aad/commands/o365group/o365group-user-list.js +17 -10
- package/dist/m365/aad/commands/o365group/o365group-user-set.js +17 -10
- package/dist/m365/aad/commands/policy/policy-list.js +12 -13
- package/dist/m365/aad/commands/siteclassification/siteclassification-enable.js +1 -3
- package/dist/m365/aad/commands/siteclassification/siteclassification-set.js +19 -20
- package/dist/m365/aad/commands/sp/sp-add.js +22 -23
- package/dist/m365/aad/commands/sp/sp-get.js +22 -23
- package/dist/m365/app/commands/app-open.js +4 -14
- package/dist/m365/cli/commands/cli-issue.js +4 -10
- package/dist/m365/cli/commands/cli-reconsent.js +2 -8
- package/dist/m365/cli/commands/config/config-set.js +1 -0
- package/dist/m365/commands/docs.js +2 -8
- package/dist/m365/commands/login.js +20 -0
- package/dist/m365/commands/setupPresets.js +2 -0
- package/dist/m365/file/commands/convert/convert-pdf.js +147 -143
- package/dist/m365/file/commands/file-add.js +87 -93
- package/dist/m365/file/commands/file-list.js +49 -55
- package/dist/m365/flow/commands/flow-list.js +4 -4
- package/dist/m365/flow/commands/flow-remove.js +2 -3
- package/dist/m365/flow/commands/run/run-resubmit.js +11 -10
- package/dist/m365/onedrive/commands/onedrive-list.js +21 -32
- package/dist/m365/outlook/commands/message/message-list.js +18 -23
- package/dist/m365/outlook/commands/message/message-move.js +15 -20
- package/dist/m365/pa/commands/app/app-export.js +3 -4
- package/dist/m365/pa/commands/app/app-get.js +11 -9
- package/dist/m365/pa/commands/app/app-remove.js +1 -1
- package/dist/m365/pa/commands/pcf/pcf-init.js +1 -2
- package/dist/m365/pa/commands/solution/solution-init.js +1 -2
- package/dist/m365/pa/commands/solution/solution-reference-add.js +1 -2
- package/dist/m365/planner/commands/bucket/bucket-add.js +15 -13
- package/dist/m365/planner/commands/bucket/bucket-get.js +27 -28
- package/dist/m365/planner/commands/bucket/bucket-list.js +15 -13
- package/dist/m365/planner/commands/bucket/bucket-remove.js +33 -34
- package/dist/m365/planner/commands/bucket/bucket-set.js +33 -34
- package/dist/m365/planner/commands/plan/plan-add.js +49 -52
- package/dist/m365/planner/commands/plan/plan-set.js +19 -20
- package/dist/m365/planner/commands/task/task-add.js +75 -78
- package/dist/m365/planner/commands/task/task-checklistitem-add.js +11 -10
- package/dist/m365/planner/commands/task/task-checklistitem-remove.js +10 -8
- package/dist/m365/planner/commands/task/task-get.js +53 -56
- package/dist/m365/planner/commands/task/task-list.js +23 -24
- package/dist/m365/planner/commands/task/task-reference-add.js +11 -10
- package/dist/m365/planner/commands/task/task-reference-remove.js +13 -14
- package/dist/m365/planner/commands/task/task-remove.js +44 -48
- package/dist/m365/planner/commands/task/task-set.js +83 -87
- package/dist/m365/pp/commands/card/card-get.js +6 -1
- package/dist/m365/purview/commands/retentionevent/retentionevent-add.js +0 -5
- package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +0 -5
- package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +0 -5
- package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-add.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-set.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-get.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-remove.js +19 -22
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-set.js +0 -5
- package/dist/m365/spfx/commands/project/JsonRule.js +1 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN021003_PKG_engines_node.js +1 -0
- package/dist/m365/spo/commands/app/app-teamspackage-download.js +17 -24
- package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-set.js +154 -0
- package/dist/m365/spo/commands/commandset/commandset-set.js +11 -2
- package/dist/m365/spo/commands/file/file-checkout-undo.js +119 -0
- package/dist/m365/spo/commands/homesite/homesite-remove.js +1 -1
- package/dist/m365/spo/commands/list/list-sensitivitylabel-ensure.js +127 -0
- package/dist/m365/spo/commands/navigation/navigation-node-add.js +31 -1
- package/dist/m365/spo/commands/navigation/navigation-node-set.js +31 -2
- package/dist/m365/{teams/Message.js → spo/commands/tenant/Solution.js} +1 -1
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-set.js +156 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-add.js +215 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-get.js +114 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-list.js +50 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +1 -1
- package/dist/m365/spo/commands.js +7 -0
- package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -7
- package/dist/settingsNames.js +1 -0
- package/dist/utils/browserUtil.js +23 -0
- package/dist/utils/md.js +1 -3
- package/dist/utils/spo.js +60 -0
- package/docs/docs/cmd/aad/app/app-add.mdx +113 -0
- package/docs/docs/cmd/aad/app/app-get.mdx +217 -0
- package/docs/docs/cmd/aad/app/app-list.mdx +21 -0
- package/docs/docs/cmd/aad/app/app-role-add.mdx +4 -0
- package/docs/docs/cmd/aad/app/app-role-list.mdx +63 -0
- package/docs/docs/cmd/aad/app/app-role-remove.mdx +4 -0
- package/docs/docs/cmd/aad/app/app-set.mdx +4 -0
- package/docs/docs/cmd/aad/approleassignment/approleassignment-add.mdx +61 -0
- package/docs/docs/cmd/aad/approleassignment/approleassignment-list.mdx +59 -0
- package/docs/docs/cmd/aad/approleassignment/approleassignment-remove.mdx +4 -0
- package/docs/docs/cmd/aad/group/group-get.mdx +24 -0
- package/docs/docs/cmd/aad/group/group-list.mdx +98 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-add.mdx +114 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-get.mdx +115 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-list.mdx +115 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-remove.mdx +4 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-set.mdx +4 -0
- package/docs/docs/cmd/aad/groupsettingtemplate/groupsettingtemplate-get.mdx +63 -0
- package/docs/docs/cmd/aad/groupsettingtemplate/groupsettingtemplate-list.mdx +63 -0
- package/docs/docs/cmd/aad/o365group/o365group-add.mdx +122 -0
- package/docs/docs/cmd/aad/o365group/o365group-conversation-list.mdx +68 -0
- package/docs/docs/cmd/aad/o365group/o365group-conversation-post-list.mdx +77 -0
- package/docs/docs/cmd/aad/o365group/o365group-get.mdx +122 -0
- package/docs/docs/cmd/aad/o365group/o365group-list.mdx +99 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-clear.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-list.mdx +96 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-remove.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-restore.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-remove.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-renew.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitycounts.mdx +48 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitydetail.mdx +60 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activityfilecounts.mdx +46 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitygroupcounts.mdx +46 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitystorage.mdx +46 -0
- package/docs/docs/cmd/aad/o365group/o365group-set.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-teamify.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-add.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-list.mdx +56 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-remove.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-set.mdx +8 -4
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-add.mdx +4 -0
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-list.mdx +59 -0
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-remove.mdx +4 -0
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-set.mdx +4 -0
- package/docs/docs/cmd/aad/policy/policy-list.mdx +77 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-disable.mdx +4 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-enable.mdx +4 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-get.mdx +57 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-set.mdx +4 -0
- package/docs/docs/cmd/aad/sp/sp-add.mdx +136 -0
- package/docs/docs/cmd/aad/sp/sp-get.mdx +166 -0
- package/docs/docs/cmd/aad/user/user-get.mdx +75 -0
- package/docs/docs/cmd/aad/user/user-guest-add.mdx +23 -0
- package/docs/docs/cmd/aad/user/user-hibp.mdx +82 -0
- package/docs/docs/cmd/aad/user/user-license-add.mdx +2 -2
- package/docs/docs/cmd/aad/user/user-license-remove.mdx +2 -2
- package/docs/docs/cmd/aad/user/user-list.mdx +52 -0
- package/docs/docs/cmd/aad/user/user-password-validate.mdx +67 -0
- package/docs/docs/cmd/aad/user/user-signin-list.mdx +131 -0
- package/docs/docs/cmd/flow/flow-list.mdx +11 -3
- package/docs/docs/cmd/flow/run/run-list.mdx +0 -3
- package/docs/docs/cmd/login.mdx +39 -0
- package/docs/docs/cmd/purview/retentionevent/retentionevent-add.mdx +0 -6
- package/docs/docs/cmd/purview/retentionevent/retentionevent-get.mdx +0 -6
- package/docs/docs/cmd/purview/retentionevent/retentionevent-list.mdx +0 -7
- package/docs/docs/cmd/purview/retentionevent/retentionevent-remove.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-list.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-remove.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.mdx +0 -6
- package/docs/docs/cmd/setup.mdx +2 -0
- package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-set.mdx +72 -0
- package/docs/docs/cmd/spo/commandset/commandset-set.mdx +12 -3
- package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +55 -0
- package/docs/docs/cmd/spo/list/list-sensitivitylabel-ensure.mdx +64 -0
- package/docs/docs/cmd/spo/navigation/navigation-node-add.mdx +7 -4
- package/docs/docs/cmd/spo/navigation/navigation-node-set.mdx +9 -0
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-set.mdx +81 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-add.mdx +183 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-get.mdx +155 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-list.mdx +114 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +1 -1
- package/docs/docs/cmd/status.mdx +6 -3
- package/docs/docs/cmd/util/accesstoken/accesstoken-get.mdx +12 -2
- package/npm-shrinkwrap.json +299 -272
- package/package.json +17 -17
- package/dist/m365/aad/commands/approleassignment/AppRoleAssignment.js +0 -3
- package/dist/m365/aad/commands/approleassignment/ServicePrincipal.js +0 -3
- package/dist/m365/aad/commands/groupsetting/GroupSetting.js +0 -3
- package/dist/m365/aad/commands/groupsettingtemplate/GroupSettingTemplate.js +0 -3
- package/dist/m365/aad/commands/siteclassification/DirectorySetting.js +0 -10
- package/dist/m365/aad/commands/siteclassification/DirectorySettingTemplatesRsp.js +0 -3
- package/dist/m365/aad/commands/siteclassification/DirectorySettingValue.js +0 -3
- package/dist/m365/outlook/Message.js +0 -3
- package/dist/m365/spo/commands/site/SitePermission.js +0 -3
- package/dist/m365/teams/Channel.js +0 -3
- package/dist/m365/teams/ConversationMember.js +0 -3
- package/dist/m365/teams/Reply.js +0 -3
- package/dist/m365/teams/Tab.js +0 -3
- package/dist/m365/teams/Team.js +0 -3
- package/dist/m365/teams/TeamsApp.js +0 -3
- package/dist/m365/teams/TeamsAppInstallation.js +0 -3
- package/dist/m365/teams/TeamsTabConfiguration.js +0 -3
- package/dist/m365/teams/commands/Meeting.js +0 -3
|
@@ -122,11 +122,11 @@ class AadAppAddCommand extends GraphCommand_1.default {
|
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
grantAdminConsent(appInfo, adminConsent, logger) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
.
|
|
125
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
+
if (!adminConsent || this.appPermissions.length === 0) {
|
|
127
|
+
return appInfo;
|
|
128
|
+
}
|
|
129
|
+
const sp = yield this.createServicePrincipal(appInfo.appId);
|
|
130
130
|
if (this.debug) {
|
|
131
131
|
logger.logToStderr("Service principal created, returned object id: " + sp.id);
|
|
132
132
|
}
|
|
@@ -145,115 +145,121 @@ class AadAppAddCommand extends GraphCommand_1.default {
|
|
|
145
145
|
}
|
|
146
146
|
});
|
|
147
147
|
});
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return appInfo;
|
|
151
|
-
});
|
|
148
|
+
yield Promise.all(tasks);
|
|
149
|
+
return appInfo;
|
|
152
150
|
});
|
|
153
151
|
}
|
|
154
152
|
addRoleToServicePrincipal(objectId, resourceId, appRoleId) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
153
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
154
|
+
const requestOptions = {
|
|
155
|
+
url: `${this.resource}/v1.0/myorganization/servicePrincipals/${objectId}/appRoleAssignments`,
|
|
156
|
+
headers: {
|
|
157
|
+
'Content-Type': 'application/json'
|
|
158
|
+
},
|
|
159
|
+
responseType: 'json',
|
|
160
|
+
data: {
|
|
161
|
+
appRoleId: appRoleId,
|
|
162
|
+
principalId: objectId,
|
|
163
|
+
resourceId: resourceId
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
return request_1.default.post(requestOptions);
|
|
167
|
+
});
|
|
168
168
|
}
|
|
169
169
|
grantOAuth2Permission(appId, resourceId, scopeName) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
170
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
171
|
+
const grantAdminConsentApplicationRequestOptions = {
|
|
172
|
+
url: `${this.resource}/v1.0/myorganization/oauth2PermissionGrants`,
|
|
173
|
+
headers: {
|
|
174
|
+
accept: 'application/json;odata.metadata=none'
|
|
175
|
+
},
|
|
176
|
+
responseType: 'json',
|
|
177
|
+
data: {
|
|
178
|
+
clientId: appId,
|
|
179
|
+
consentType: "AllPrincipals",
|
|
180
|
+
principalId: null,
|
|
181
|
+
resourceId: resourceId,
|
|
182
|
+
scope: scopeName
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
return request_1.default.post(grantAdminConsentApplicationRequestOptions);
|
|
186
|
+
});
|
|
185
187
|
}
|
|
186
188
|
createServicePrincipal(appId) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
189
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
190
|
+
const requestOptions = {
|
|
191
|
+
url: `${this.resource}/v1.0/myorganization/servicePrincipals`,
|
|
192
|
+
headers: {
|
|
193
|
+
'content-type': 'application/json'
|
|
194
|
+
},
|
|
195
|
+
data: {
|
|
196
|
+
appId: appId
|
|
197
|
+
},
|
|
198
|
+
responseType: 'json'
|
|
199
|
+
};
|
|
200
|
+
return request_1.default.post(requestOptions);
|
|
201
|
+
});
|
|
198
202
|
}
|
|
199
203
|
updateAppFromManifest(args, appInfo) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
.patch(updateAppRequestOptions)
|
|
255
|
-
|
|
256
|
-
|
|
204
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
205
|
+
if (!args.options.manifest) {
|
|
206
|
+
return appInfo;
|
|
207
|
+
}
|
|
208
|
+
const v2Manifest = JSON.parse(args.options.manifest);
|
|
209
|
+
// remove properties that might be coming from the original app that was
|
|
210
|
+
// used to create the manifest and which can't be updated
|
|
211
|
+
delete v2Manifest.id;
|
|
212
|
+
delete v2Manifest.appId;
|
|
213
|
+
delete v2Manifest.publisherDomain;
|
|
214
|
+
// extract secrets from the manifest. Store them in a separate variable
|
|
215
|
+
const secrets = this.getSecretsFromManifest(v2Manifest);
|
|
216
|
+
// Azure Portal returns v2 manifest whereas the Graph API expects a v1.6
|
|
217
|
+
if (args.options.apisApplication || args.options.apisDelegated) {
|
|
218
|
+
// take submitted delegated / application permissions as options
|
|
219
|
+
// otherwise, they will be skipped in the app update
|
|
220
|
+
v2Manifest.requiredResourceAccess = appInfo.requiredResourceAccess;
|
|
221
|
+
}
|
|
222
|
+
if (args.options.redirectUris) {
|
|
223
|
+
// take submitted redirectUris/platform as options
|
|
224
|
+
// otherwise, they will be removed from the app
|
|
225
|
+
v2Manifest.replyUrlsWithType = args.options.redirectUris.split(',').map(u => {
|
|
226
|
+
return {
|
|
227
|
+
url: u.trim(),
|
|
228
|
+
type: this.translatePlatformToType(args.options.platform)
|
|
229
|
+
};
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
if (args.options.multitenant) {
|
|
233
|
+
// override manifest setting when using multitenant flag
|
|
234
|
+
v2Manifest.signInAudience = 'AzureADMultipleOrgs';
|
|
235
|
+
}
|
|
236
|
+
if (args.options.implicitFlow) {
|
|
237
|
+
// remove manifest settings when using implicitFlow flag
|
|
238
|
+
delete v2Manifest.oauth2AllowIdTokenImplicitFlow;
|
|
239
|
+
delete v2Manifest.oauth2AllowImplicitFlow;
|
|
240
|
+
}
|
|
241
|
+
if (args.options.scopeName) {
|
|
242
|
+
// override manifest setting when using options.
|
|
243
|
+
delete v2Manifest.oauth2Permissions;
|
|
244
|
+
}
|
|
245
|
+
if (args.options.certificateFile || args.options.certificateBase64Encoded) {
|
|
246
|
+
// override manifest setting when using options.
|
|
247
|
+
delete v2Manifest.keyCredentials;
|
|
248
|
+
}
|
|
249
|
+
const graphManifest = this.transformManifest(v2Manifest);
|
|
250
|
+
const updateAppRequestOptions = {
|
|
251
|
+
url: `${this.resource}/v1.0/myorganization/applications/${appInfo.id}`,
|
|
252
|
+
headers: {
|
|
253
|
+
'content-type': 'application/json'
|
|
254
|
+
},
|
|
255
|
+
responseType: 'json',
|
|
256
|
+
data: graphManifest
|
|
257
|
+
};
|
|
258
|
+
yield request_1.default.patch(updateAppRequestOptions);
|
|
259
|
+
yield this.updatePreAuthorizedAppsFromManifest(v2Manifest, appInfo);
|
|
260
|
+
yield this.createSecrets(secrets, appInfo);
|
|
261
|
+
return appInfo;
|
|
262
|
+
});
|
|
257
263
|
}
|
|
258
264
|
getSecretsFromManifest(manifest) {
|
|
259
265
|
if (!manifest.passwordCredentials || manifest.passwordCredentials.length === 0) {
|
|
@@ -275,44 +281,45 @@ class AadAppAddCommand extends GraphCommand_1.default {
|
|
|
275
281
|
return secrets;
|
|
276
282
|
}
|
|
277
283
|
updatePreAuthorizedAppsFromManifest(manifest, appInfo) {
|
|
278
|
-
|
|
279
|
-
!manifest
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
p
|
|
290
|
-
|
|
284
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
285
|
+
if (!manifest ||
|
|
286
|
+
!manifest.preAuthorizedApplications ||
|
|
287
|
+
manifest.preAuthorizedApplications.length === 0) {
|
|
288
|
+
return appInfo;
|
|
289
|
+
}
|
|
290
|
+
const graphManifest = {
|
|
291
|
+
api: {
|
|
292
|
+
preAuthorizedApplications: manifest.preAuthorizedApplications
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
graphManifest.api.preAuthorizedApplications.forEach((p) => {
|
|
296
|
+
p.delegatedPermissionIds = p.permissionIds;
|
|
297
|
+
delete p.permissionIds;
|
|
298
|
+
});
|
|
299
|
+
const updateAppRequestOptions = {
|
|
300
|
+
url: `${this.resource}/v1.0/myorganization/applications/${appInfo.id}`,
|
|
301
|
+
headers: {
|
|
302
|
+
'content-type': 'application/json'
|
|
303
|
+
},
|
|
304
|
+
responseType: 'json',
|
|
305
|
+
data: graphManifest
|
|
306
|
+
};
|
|
307
|
+
yield request_1.default.patch(updateAppRequestOptions);
|
|
308
|
+
return appInfo;
|
|
291
309
|
});
|
|
292
|
-
const updateAppRequestOptions = {
|
|
293
|
-
url: `${this.resource}/v1.0/myorganization/applications/${appInfo.id}`,
|
|
294
|
-
headers: {
|
|
295
|
-
'content-type': 'application/json'
|
|
296
|
-
},
|
|
297
|
-
responseType: 'json',
|
|
298
|
-
data: graphManifest
|
|
299
|
-
};
|
|
300
|
-
return request_1.default
|
|
301
|
-
.patch(updateAppRequestOptions)
|
|
302
|
-
.then(_ => Promise.resolve(appInfo));
|
|
303
310
|
}
|
|
304
311
|
createSecrets(secrets, appInfo) {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
appInfo.secrets =
|
|
312
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
313
|
+
if (secrets.length === 0) {
|
|
314
|
+
return appInfo;
|
|
315
|
+
}
|
|
316
|
+
const secretsOutput = yield Promise
|
|
317
|
+
.all(secrets.map(secret => this.createSecret({
|
|
318
|
+
appObjectId: appInfo.id,
|
|
319
|
+
displayName: secret.name,
|
|
320
|
+
expirationDate: secret.expirationDate
|
|
321
|
+
})));
|
|
322
|
+
appInfo.secrets = secretsOutput;
|
|
316
323
|
return appInfo;
|
|
317
324
|
});
|
|
318
325
|
}
|
|
@@ -405,52 +412,52 @@ class AadAppAddCommand extends GraphCommand_1.default {
|
|
|
405
412
|
return graphManifest;
|
|
406
413
|
}
|
|
407
414
|
configureUri(args, appInfo, logger) {
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
415
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
416
|
+
if (!args.options.uri) {
|
|
417
|
+
return appInfo;
|
|
418
|
+
}
|
|
419
|
+
if (this.verbose) {
|
|
420
|
+
logger.logToStderr(`Configuring Azure AD application ID URI...`);
|
|
421
|
+
}
|
|
422
|
+
const applicationInfo = {};
|
|
423
|
+
if (args.options.uri) {
|
|
424
|
+
const appUri = args.options.uri.replace(/_appId_/g, appInfo.appId);
|
|
425
|
+
applicationInfo.identifierUris = [appUri];
|
|
426
|
+
}
|
|
427
|
+
if (args.options.scopeName) {
|
|
428
|
+
applicationInfo.api = {
|
|
429
|
+
oauth2PermissionScopes: [{
|
|
430
|
+
adminConsentDescription: args.options.scopeAdminConsentDescription,
|
|
431
|
+
adminConsentDisplayName: args.options.scopeAdminConsentDisplayName,
|
|
432
|
+
id: (0, uuid_1.v4)(),
|
|
433
|
+
type: args.options.scopeConsentBy === 'adminsAndUsers' ? 'User' : 'Admin',
|
|
434
|
+
value: args.options.scopeName
|
|
435
|
+
}]
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
const requestOptions = {
|
|
439
|
+
url: `${this.resource}/v1.0/myorganization/applications/${appInfo.id}`,
|
|
440
|
+
headers: {
|
|
441
|
+
'content-type': 'application/json;odata.metadata=none'
|
|
442
|
+
},
|
|
443
|
+
responseType: 'json',
|
|
444
|
+
data: applicationInfo
|
|
428
445
|
};
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
headers: {
|
|
433
|
-
'content-type': 'application/json;odata.metadata=none'
|
|
434
|
-
},
|
|
435
|
-
responseType: 'json',
|
|
436
|
-
data: applicationInfo
|
|
437
|
-
};
|
|
438
|
-
return request_1.default
|
|
439
|
-
.patch(requestOptions)
|
|
440
|
-
.then(_ => appInfo);
|
|
446
|
+
yield request_1.default.patch(requestOptions);
|
|
447
|
+
return appInfo;
|
|
448
|
+
});
|
|
441
449
|
}
|
|
442
450
|
resolveApis(args, logger) {
|
|
443
451
|
var _a;
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
.getAllItems(`${this.resource}/v1.0/myorganization/servicePrincipals?$select=appId,appRoles,id,oauth2PermissionScopes,servicePrincipalNames`)
|
|
453
|
-
.then(servicePrincipals => {
|
|
452
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
453
|
+
if (!args.options.apisDelegated && !args.options.apisApplication
|
|
454
|
+
&& (typeof ((_a = this.manifest) === null || _a === void 0 ? void 0 : _a.requiredResourceAccess) === 'undefined' || this.manifest.requiredResourceAccess.length === 0)) {
|
|
455
|
+
return [];
|
|
456
|
+
}
|
|
457
|
+
if (this.verbose) {
|
|
458
|
+
logger.logToStderr('Resolving requested APIs...');
|
|
459
|
+
}
|
|
460
|
+
const servicePrincipals = yield odata_1.odata.getAllItems(`${this.resource}/v1.0/myorganization/servicePrincipals?$select=appId,appRoles,id,oauth2PermissionScopes,servicePrincipalNames`);
|
|
454
461
|
let resolvedApis = [];
|
|
455
462
|
try {
|
|
456
463
|
if (args.options.apisDelegated || args.options.apisApplication) {
|
|
@@ -496,10 +503,10 @@ class AadAppAddCommand extends GraphCommand_1.default {
|
|
|
496
503
|
logger.logToStderr(`App role assignments: ${JSON.stringify(this.appPermissions.flatMap(permission => permission.resourceAccess.filter(access => access.type === "Role")), null, 2)}`);
|
|
497
504
|
logger.logToStderr(`OAuth2 permissions: ${JSON.stringify(this.appPermissions.flatMap(permission => permission.scope), null, 2)}`);
|
|
498
505
|
}
|
|
499
|
-
return
|
|
506
|
+
return resolvedApis;
|
|
500
507
|
}
|
|
501
508
|
catch (e) {
|
|
502
|
-
|
|
509
|
+
throw e;
|
|
503
510
|
}
|
|
504
511
|
});
|
|
505
512
|
}
|
|
@@ -565,48 +572,48 @@ class AadAppAddCommand extends GraphCommand_1.default {
|
|
|
565
572
|
}
|
|
566
573
|
}
|
|
567
574
|
configureSecret(args, appInfo, logger) {
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
.createSecret({ appObjectId: appInfo.id })
|
|
576
|
-
.then(secret => {
|
|
575
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
576
|
+
if (!args.options.withSecret || (appInfo.secrets && appInfo.secrets.length > 0)) {
|
|
577
|
+
return appInfo;
|
|
578
|
+
}
|
|
579
|
+
if (this.verbose) {
|
|
580
|
+
logger.logToStderr(`Configure Azure AD app secret...`);
|
|
581
|
+
}
|
|
582
|
+
const secret = yield this.createSecret({ appObjectId: appInfo.id });
|
|
577
583
|
if (!appInfo.secrets) {
|
|
578
584
|
appInfo.secrets = [];
|
|
579
585
|
}
|
|
580
586
|
appInfo.secrets.push(secret);
|
|
581
|
-
return
|
|
587
|
+
return appInfo;
|
|
582
588
|
});
|
|
583
589
|
}
|
|
584
590
|
createSecret({ appObjectId, displayName = undefined, expirationDate = undefined }) {
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
const secretName = displayName !== null && displayName !== void 0 ? displayName : 'Default';
|
|
591
|
-
const requestOptions = {
|
|
592
|
-
url: `${this.resource}/v1.0/myorganization/applications/${appObjectId}/addPassword`,
|
|
593
|
-
headers: {
|
|
594
|
-
'content-type': 'application/json'
|
|
595
|
-
},
|
|
596
|
-
responseType: 'json',
|
|
597
|
-
data: {
|
|
598
|
-
passwordCredential: {
|
|
599
|
-
displayName: secretName,
|
|
600
|
-
endDateTime: secretExpirationDate.toISOString()
|
|
601
|
-
}
|
|
591
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
592
|
+
let secretExpirationDate = expirationDate;
|
|
593
|
+
if (!secretExpirationDate) {
|
|
594
|
+
secretExpirationDate = new Date();
|
|
595
|
+
secretExpirationDate.setFullYear(secretExpirationDate.getFullYear() + 1);
|
|
602
596
|
}
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
597
|
+
const secretName = displayName !== null && displayName !== void 0 ? displayName : 'Default';
|
|
598
|
+
const requestOptions = {
|
|
599
|
+
url: `${this.resource}/v1.0/myorganization/applications/${appObjectId}/addPassword`,
|
|
600
|
+
headers: {
|
|
601
|
+
'content-type': 'application/json'
|
|
602
|
+
},
|
|
603
|
+
responseType: 'json',
|
|
604
|
+
data: {
|
|
605
|
+
passwordCredential: {
|
|
606
|
+
displayName: secretName,
|
|
607
|
+
endDateTime: secretExpirationDate.toISOString()
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
};
|
|
611
|
+
const response = yield request_1.default.post(requestOptions);
|
|
612
|
+
return {
|
|
613
|
+
displayName: secretName,
|
|
614
|
+
value: response.secretText
|
|
615
|
+
};
|
|
616
|
+
});
|
|
610
617
|
}
|
|
611
618
|
getCertificateBase64Encoded(args, logger) {
|
|
612
619
|
if (args.options.certificateBase64Encoded) {
|
|
@@ -623,43 +630,45 @@ class AadAppAddCommand extends GraphCommand_1.default {
|
|
|
623
630
|
}
|
|
624
631
|
}
|
|
625
632
|
saveAppInfo(args, appInfo, logger) {
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
const filePath = '.m365rc.json';
|
|
630
|
-
if (this.verbose) {
|
|
631
|
-
logger.logToStderr(`Saving Azure AD app registration information to the ${filePath} file...`);
|
|
632
|
-
}
|
|
633
|
-
let m365rc = {};
|
|
634
|
-
if (fs.existsSync(filePath)) {
|
|
635
|
-
if (this.debug) {
|
|
636
|
-
logger.logToStderr(`Reading existing ${filePath}...`);
|
|
633
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
634
|
+
if (!args.options.save) {
|
|
635
|
+
return appInfo;
|
|
637
636
|
}
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
637
|
+
const filePath = '.m365rc.json';
|
|
638
|
+
if (this.verbose) {
|
|
639
|
+
logger.logToStderr(`Saving Azure AD app registration information to the ${filePath} file...`);
|
|
640
|
+
}
|
|
641
|
+
let m365rc = {};
|
|
642
|
+
if (fs.existsSync(filePath)) {
|
|
643
|
+
if (this.debug) {
|
|
644
|
+
logger.logToStderr(`Reading existing ${filePath}...`);
|
|
645
|
+
}
|
|
646
|
+
try {
|
|
647
|
+
const fileContents = fs.readFileSync(filePath, 'utf8');
|
|
648
|
+
if (fileContents) {
|
|
649
|
+
m365rc = JSON.parse(fileContents);
|
|
650
|
+
}
|
|
642
651
|
}
|
|
652
|
+
catch (e) {
|
|
653
|
+
logger.logToStderr(`Error reading ${filePath}: ${e}. Please add app info to ${filePath} manually.`);
|
|
654
|
+
return appInfo;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
if (!m365rc.apps) {
|
|
658
|
+
m365rc.apps = [];
|
|
659
|
+
}
|
|
660
|
+
m365rc.apps.push({
|
|
661
|
+
appId: appInfo.appId,
|
|
662
|
+
name: this.appName
|
|
663
|
+
});
|
|
664
|
+
try {
|
|
665
|
+
fs.writeFileSync(filePath, JSON.stringify(m365rc, null, 2));
|
|
643
666
|
}
|
|
644
667
|
catch (e) {
|
|
645
|
-
logger.logToStderr(`Error
|
|
646
|
-
return Promise.resolve(appInfo);
|
|
668
|
+
logger.logToStderr(`Error writing ${filePath}: ${e}. Please add app info to ${filePath} manually.`);
|
|
647
669
|
}
|
|
648
|
-
|
|
649
|
-
if (!m365rc.apps) {
|
|
650
|
-
m365rc.apps = [];
|
|
651
|
-
}
|
|
652
|
-
m365rc.apps.push({
|
|
653
|
-
appId: appInfo.appId,
|
|
654
|
-
name: this.appName
|
|
670
|
+
return appInfo;
|
|
655
671
|
});
|
|
656
|
-
try {
|
|
657
|
-
fs.writeFileSync(filePath, JSON.stringify(m365rc, null, 2));
|
|
658
|
-
}
|
|
659
|
-
catch (e) {
|
|
660
|
-
logger.logToStderr(`Error writing ${filePath}: ${e}. Please add app info to ${filePath} manually.`);
|
|
661
|
-
}
|
|
662
|
-
return Promise.resolve(appInfo);
|
|
663
672
|
}
|
|
664
673
|
translatePlatformToType(platform) {
|
|
665
674
|
if (platform === 'publicClient') {
|