@pnp/cli-microsoft365 7.5.0-beta.494c631 → 7.5.0-beta.940b241
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 +2 -2
- package/.eslintrc.cjs +6 -2
- package/.mocharc.json +3 -5
- package/Dockerfile +2 -5
- package/README.md +2 -2
- package/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/Command.js +1 -1
- package/dist/m365/app/commands/app-get.js +2 -2
- package/dist/m365/base/AppCommand.js +2 -2
- package/dist/m365/base/{YammerCommand.js → VivaEngageCommand.js} +2 -2
- package/dist/m365/cli/commands/cli-consent.js +5 -3
- package/dist/m365/entra/aadCommands.js +3 -0
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-get.js +2 -2
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-add.js +8 -8
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-get.js +2 -2
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-list.js +2 -2
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-remove.js +153 -0
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-remove.js +2 -2
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-roleassignment-add.js +4 -4
- package/dist/m365/entra/commands/app/app-add.js +1 -1
- package/dist/m365/entra/commands/app/app-get.js +1 -1
- package/dist/m365/entra/commands/app/app-list.js +1 -1
- package/dist/m365/entra/commands/app/app-permission-add.js +4 -8
- package/dist/m365/entra/commands/app/app-permission-list.js +182 -0
- package/dist/m365/entra/commands/app/app-remove.js +1 -1
- package/dist/m365/entra/commands/app/app-role-add.js +1 -1
- package/dist/m365/entra/commands/app/app-role-list.js +1 -1
- package/dist/m365/entra/commands/app/app-role-remove.js +1 -1
- package/dist/m365/entra/commands/app/app-set.js +1 -1
- package/dist/m365/entra/commands/{sp/sp-add.js → enterpriseapp/enterpriseapp-add.js} +18 -18
- package/dist/m365/entra/commands/{sp/sp-get.js → enterpriseapp/enterpriseapp-get.js} +19 -19
- package/dist/m365/entra/commands/{sp/sp-list.js → enterpriseapp/enterpriseapp-list.js} +13 -13
- package/dist/m365/entra/commands/group/group-add.js +224 -0
- package/dist/m365/entra/commands/group/group-get.js +3 -3
- package/dist/m365/entra/commands/group/group-remove.js +2 -2
- package/dist/m365/entra/commands/group/group-user-add.js +145 -0
- package/dist/m365/entra/commands/group/group-user-list.js +2 -2
- package/dist/m365/entra/commands/m365group/m365group-conversation-list.js +2 -2
- package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +3 -3
- package/dist/m365/entra/commands/m365group/m365group-get.js +3 -3
- package/dist/m365/entra/commands/m365group/m365group-remove.js +2 -2
- package/dist/m365/entra/commands/m365group/m365group-renew.js +2 -2
- package/dist/m365/entra/commands/m365group/m365group-report-activitygroupcounts.js +1 -1
- package/dist/m365/entra/commands/m365group/m365group-set.js +2 -2
- package/dist/m365/entra/commands/m365group/m365group-teamify.js +2 -2
- package/dist/m365/entra/commands/m365group/m365group-user-add.js +2 -2
- package/dist/m365/entra/commands/m365group/m365group-user-list.js +3 -3
- package/dist/m365/entra/commands/m365group/m365group-user-remove.js +2 -2
- package/dist/m365/entra/commands/m365group/m365group-user-set.js +2 -2
- package/dist/m365/entra/commands/user/user-get.js +38 -38
- package/dist/m365/entra/commands/user/user-registrationdetails-list.js +224 -0
- package/dist/m365/entra/commands.js +17 -0
- package/dist/m365/external/commands/connection/connection-doctor.js +2 -1
- package/dist/m365/file/commands/file-copy.js +151 -0
- package/dist/m365/file/commands.js +1 -0
- package/dist/m365/flow/commands/owner/owner-ensure.js +4 -4
- package/dist/m365/flow/commands/owner/owner-remove.js +4 -4
- package/dist/m365/onenote/commands/notebook/notebook-list.js +2 -2
- package/dist/m365/onenote/commands/page/page-list.js +2 -2
- package/dist/m365/pa/commands/app/app-owner-set.js +2 -2
- package/dist/m365/pa/commands/app/app-permission-ensure.js +4 -4
- package/dist/m365/pa/commands/app/app-permission-remove.js +4 -4
- package/dist/m365/planner/commands/bucket/bucket-add.js +2 -2
- package/dist/m365/planner/commands/bucket/bucket-get.js +2 -2
- package/dist/m365/planner/commands/bucket/bucket-list.js +2 -2
- package/dist/m365/planner/commands/bucket/bucket-remove.js +2 -2
- package/dist/m365/planner/commands/bucket/bucket-set.js +2 -2
- package/dist/m365/planner/commands/plan/plan-add.js +2 -2
- package/dist/m365/planner/commands/plan/plan-get.js +2 -2
- package/dist/m365/planner/commands/plan/plan-list.js +2 -2
- package/dist/m365/planner/commands/plan/plan-remove.js +2 -2
- package/dist/m365/planner/commands/plan/plan-set.js +2 -2
- package/dist/m365/planner/commands/roster/roster-member-add.js +2 -2
- package/dist/m365/planner/commands/roster/roster-member-get.js +2 -2
- package/dist/m365/planner/commands/roster/roster-member-remove.js +2 -2
- package/dist/m365/planner/commands/task/task-add.js +2 -2
- package/dist/m365/planner/commands/task/task-get.js +2 -2
- package/dist/m365/planner/commands/task/task-list.js +2 -2
- package/dist/m365/planner/commands/task/task-remove.js +2 -2
- package/dist/m365/planner/commands/task/task-set.js +2 -2
- package/dist/m365/spfx/commands/project/DeployWorkflow.js +4 -3
- package/dist/m365/spfx/commands/project/project-github-workflow-add.js +1 -1
- package/dist/m365/spo/commands/group/group-member-add.js +4 -4
- package/dist/m365/spo/commands/group/group-member-remove.js +2 -2
- package/dist/m365/spo/commands/group/group-set.js +2 -2
- package/dist/m365/spo/commands/site/site-remove.js +2 -2
- package/dist/m365/spo/commands/site/site-set.js +2 -2
- package/dist/m365/spo/commands/user/user-ensure.js +2 -2
- package/dist/m365/teams/commands/app/app-install.js +2 -2
- package/dist/m365/teams/commands/channel/channel-get.js +2 -2
- package/dist/m365/teams/commands/channel/channel-list.js +2 -2
- package/dist/m365/teams/commands/channel/channel-member-add.js +2 -2
- package/dist/m365/teams/commands/channel/channel-member-list.js +2 -2
- package/dist/m365/teams/commands/channel/channel-member-remove.js +2 -2
- package/dist/m365/teams/commands/channel/channel-member-set.js +2 -2
- package/dist/m365/teams/commands/channel/channel-remove.js +2 -2
- package/dist/m365/teams/commands/channel/channel-set.js +2 -2
- package/dist/m365/teams/commands/meeting/meeting-add.js +2 -2
- package/dist/m365/teams/commands/meeting/meeting-attendancereport-list.js +2 -2
- package/dist/m365/teams/commands/meeting/meeting-get.js +3 -3
- package/dist/m365/teams/commands/meeting/meeting-list.js +2 -2
- package/dist/m365/teams/commands/meeting/meeting-transcript-list.js +2 -2
- package/dist/m365/teams/commands/tab/tab-get.js +2 -2
- package/dist/m365/teams/commands/team/team-add.js +6 -6
- package/dist/m365/teams/commands/team/team-archive.js +2 -2
- package/dist/m365/teams/commands/team/team-get.js +2 -2
- package/dist/m365/teams/commands/team/team-remove.js +2 -2
- package/dist/m365/teams/commands/team/team-unarchive.js +2 -2
- package/dist/m365/{yammer/commands/group/group-list.js → viva/commands/engage/engage-group-list.js} +19 -14
- package/dist/m365/{yammer/commands/group/group-user-add.js → viva/commands/engage/engage-group-user-add.js} +19 -14
- package/dist/m365/{yammer/commands/group/group-user-remove.js → viva/commands/engage/engage-group-user-remove.js} +19 -14
- package/dist/m365/{yammer/commands/message/message-add.js → viva/commands/engage/engage-message-add.js} +19 -14
- package/dist/m365/{yammer/commands/message/message-get.js → viva/commands/engage/engage-message-get.js} +17 -12
- package/dist/m365/{yammer/commands/message/message-like-set.js → viva/commands/engage/engage-message-like-set.js} +21 -16
- package/dist/m365/{yammer/commands/message/message-list.js → viva/commands/engage/engage-message-list.js} +21 -16
- package/dist/m365/{yammer/commands/message/message-remove.js → viva/commands/engage/engage-message-remove.js} +20 -15
- package/dist/m365/{yammer/commands/network/network-list.js → viva/commands/engage/engage-network-list.js} +16 -11
- package/dist/m365/viva/commands/engage/engage-report-activitycounts.js +23 -0
- package/dist/m365/viva/commands/engage/engage-report-activityusercounts.js +23 -0
- package/dist/m365/viva/commands/engage/engage-report-activityuserdetail.js +23 -0
- package/dist/m365/viva/commands/engage/engage-report-deviceusagedistributionusercounts.js +23 -0
- package/dist/m365/viva/commands/engage/engage-report-deviceusageusercounts.js +23 -0
- package/dist/m365/viva/commands/engage/engage-report-deviceusageuserdetail.js +23 -0
- package/dist/m365/viva/commands/engage/engage-report-groupsactivitycounts.js +23 -0
- package/dist/m365/viva/commands/engage/engage-report-groupsactivitydetail.js +23 -0
- package/dist/m365/viva/commands/engage/engage-report-groupsactivitygroupcounts.js +23 -0
- package/dist/m365/{yammer/commands/yammer-search.js → viva/commands/engage/engage-search.js} +23 -18
- package/dist/m365/{yammer/commands/user/user-get.js → viva/commands/engage/engage-user-get.js} +18 -13
- package/dist/m365/{yammer/commands/user/user-list.js → viva/commands/engage/engage-user-list.js} +18 -13
- package/dist/m365/{yammer/commands.js → viva/commands/engage/yammerCommands.js} +1 -1
- package/dist/m365/viva/commands.js +22 -1
- package/dist/utils/{aadAdministrativeUnit.js → entraAdministrativeUnit.js} +2 -2
- package/dist/utils/{aadDevice.js → entraDevice.js} +2 -2
- package/dist/utils/{aadGroup.js → entraGroup.js} +2 -2
- package/dist/utils/{aadUser.js → entraUser.js} +38 -2
- package/dist/utils/spo.js +24 -2
- package/dist/utils/urlUtil.js +31 -0
- package/dist/utils/validation.js +8 -0
- package/docs/docs/cmd/cli/cli-consent.mdx +9 -9
- package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-add.mdx +5 -3
- package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-remove.mdx +107 -0
- package/docs/docs/cmd/entra/app/app-add.mdx +2 -1
- package/docs/docs/cmd/entra/app/app-get.mdx +1 -0
- package/docs/docs/cmd/entra/app/app-list.mdx +1 -0
- package/docs/docs/cmd/entra/app/app-permission-add.mdx +3 -2
- package/docs/docs/cmd/entra/app/app-permission-list.mdx +105 -0
- package/docs/docs/cmd/entra/app/app-remove.mdx +1 -0
- package/docs/docs/cmd/entra/app/app-role-add.mdx +1 -0
- package/docs/docs/cmd/entra/app/app-role-list.mdx +1 -0
- package/docs/docs/cmd/entra/app/app-role-remove.mdx +1 -0
- package/docs/docs/cmd/entra/app/app-set.mdx +1 -0
- package/docs/docs/cmd/entra/{sp/sp-add.mdx → enterpriseapp/enterpriseapp-add.mdx} +16 -15
- package/docs/docs/cmd/entra/{sp/sp-get.mdx → enterpriseapp/enterpriseapp-get.mdx} +15 -14
- package/docs/docs/cmd/entra/{sp/sp-list.mdx → enterpriseapp/enterpriseapp-list.mdx} +22 -21
- package/docs/docs/cmd/entra/group/group-add.mdx +231 -0
- package/docs/docs/cmd/entra/group/group-user-add.mdx +62 -0
- package/docs/docs/cmd/entra/m365group/m365group-report-activitygroupcounts.mdx +1 -1
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-add.mdx +3 -3
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-list.mdx +1 -1
- package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +246 -0
- package/docs/docs/cmd/external/item/item-add.mdx +1 -1
- package/docs/docs/cmd/file/convert/convert-pdf.mdx +4 -0
- package/docs/docs/cmd/file/file-add.mdx +4 -0
- package/docs/docs/cmd/file/file-copy.mdx +68 -0
- package/docs/docs/cmd/file/file-list.mdx +100 -0
- package/docs/docs/cmd/setup.mdx +4 -0
- package/docs/docs/cmd/spo/list/list-webhook-set.mdx +1 -1
- package/docs/docs/cmd/spo/listitem/listitem-list.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-set.mdx +14 -2
- package/docs/docs/cmd/{yammer/group/group-list.mdx → viva/engage/engage-group-list.mdx} +13 -13
- package/docs/docs/cmd/{yammer/group/group-user-add.mdx → viva/engage/engage-group-user-add.mdx} +7 -7
- package/docs/docs/cmd/{yammer/group/group-user-remove.mdx → viva/engage/engage-group-user-remove.mdx} +10 -10
- package/docs/docs/cmd/{yammer/message/message-add.mdx → viva/engage/engage-message-add.mdx} +12 -13
- package/docs/docs/cmd/{yammer/message/message-get.mdx → viva/engage/engage-message-get.mdx} +10 -10
- package/docs/docs/cmd/{yammer/message/message-like-set.mdx → viva/engage/engage-message-like-set.mdx} +10 -10
- package/docs/docs/cmd/{yammer/message/message-list.mdx → viva/engage/engage-message-list.mdx} +21 -21
- package/docs/docs/cmd/{yammer/message/message-remove.mdx → viva/engage/engage-message-remove.mdx} +10 -10
- package/docs/docs/cmd/{yammer/network/network-list.mdx → viva/engage/engage-network-list.mdx} +6 -6
- package/docs/docs/cmd/{yammer/report/report-activitycounts.mdx → viva/engage/engage-report-activitycounts.mdx} +9 -9
- package/docs/docs/cmd/{yammer/report/report-activityusercounts.mdx → viva/engage/engage-report-activityusercounts.mdx} +9 -9
- package/docs/docs/cmd/{yammer/report/report-activityuserdetail.mdx → viva/engage/engage-report-activityuserdetail.mdx} +11 -12
- package/docs/docs/cmd/{yammer/report/report-deviceusagedistributionusercounts.mdx → viva/engage/engage-report-deviceusagedistributionusercounts.mdx} +5 -5
- package/docs/docs/cmd/{yammer/report/report-deviceusageusercounts.mdx → viva/engage/engage-report-deviceusageusercounts.mdx} +5 -5
- package/docs/docs/cmd/{yammer/report/report-deviceusageuserdetail.mdx → viva/engage/engage-report-deviceusageuserdetail.mdx} +11 -11
- package/docs/docs/cmd/{yammer/report/report-groupsactivitycounts.mdx → viva/engage/engage-report-groupsactivitycounts.mdx} +9 -9
- package/docs/docs/cmd/{yammer/report/report-groupsactivitydetail.mdx → viva/engage/engage-report-groupsactivitydetail.mdx} +11 -11
- package/docs/docs/cmd/{yammer/report/report-groupsactivitygroupcounts.mdx → viva/engage/engage-report-groupsactivitygroupcounts.mdx} +5 -5
- package/docs/docs/cmd/{yammer/yammer-search.mdx → viva/engage/engage-search.mdx} +10 -10
- package/docs/docs/cmd/{yammer/user/user-get.mdx → viva/engage/engage-user-get.mdx} +8 -8
- package/docs/docs/cmd/{yammer/user/user-list.mdx → viva/engage/engage-user-list.mdx} +11 -11
- package/npm-shrinkwrap.json +228 -166
- package/package.json +20 -19
- package/dist/m365/base/AzmgmtCommand.js +0 -18
- package/dist/m365/base/AzmgmtItemsListCommand.js +0 -41
- package/dist/m365/yammer/commands/report/report-activitycounts.js +0 -15
- package/dist/m365/yammer/commands/report/report-activityusercounts.js +0 -15
- package/dist/m365/yammer/commands/report/report-activityuserdetail.js +0 -15
- package/dist/m365/yammer/commands/report/report-deviceusagedistributionusercounts.js +0 -15
- package/dist/m365/yammer/commands/report/report-deviceusageusercounts.js +0 -15
- package/dist/m365/yammer/commands/report/report-deviceusageuserdetail.js +0 -15
- package/dist/m365/yammer/commands/report/report-groupsactivitycounts.js +0 -15
- package/dist/m365/yammer/commands/report/report-groupsactivitydetail.js +0 -15
- package/dist/m365/yammer/commands/report/report-groupsactivitygroupcounts.js +0 -15
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _EntraGroupAddCommand_instances, _EntraGroupAddCommand_initOptions, _EntraGroupAddCommand_initValidators, _EntraGroupAddCommand_initTelemetry;
|
|
7
|
+
import GraphCommand from '../../../base/GraphCommand.js';
|
|
8
|
+
import commands from '../../commands.js';
|
|
9
|
+
import aadCommands from '../../aadCommands.js';
|
|
10
|
+
import { validation } from '../../../../utils/validation.js';
|
|
11
|
+
import request from '../../../../request.js';
|
|
12
|
+
import { entraUser } from '../../../../utils/entraUser.js';
|
|
13
|
+
class EntraGroupAddCommand extends GraphCommand {
|
|
14
|
+
get name() {
|
|
15
|
+
return commands.GROUP_ADD;
|
|
16
|
+
}
|
|
17
|
+
get description() {
|
|
18
|
+
return 'Creates a Microsoft Entra group';
|
|
19
|
+
}
|
|
20
|
+
alias() {
|
|
21
|
+
return [aadCommands.GROUP_ADD];
|
|
22
|
+
}
|
|
23
|
+
allowUnknownOptions() {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
constructor() {
|
|
27
|
+
super();
|
|
28
|
+
_EntraGroupAddCommand_instances.add(this);
|
|
29
|
+
__classPrivateFieldGet(this, _EntraGroupAddCommand_instances, "m", _EntraGroupAddCommand_initTelemetry).call(this);
|
|
30
|
+
__classPrivateFieldGet(this, _EntraGroupAddCommand_instances, "m", _EntraGroupAddCommand_initOptions).call(this);
|
|
31
|
+
__classPrivateFieldGet(this, _EntraGroupAddCommand_instances, "m", _EntraGroupAddCommand_initValidators).call(this);
|
|
32
|
+
}
|
|
33
|
+
async commandAction(logger, args) {
|
|
34
|
+
let group;
|
|
35
|
+
let ownerIds = [];
|
|
36
|
+
let memberIds = [];
|
|
37
|
+
try {
|
|
38
|
+
const manifest = this.createRequestBody(args.options);
|
|
39
|
+
const requestOptions = {
|
|
40
|
+
url: `${this.resource}/v1.0/groups`,
|
|
41
|
+
headers: {
|
|
42
|
+
accept: 'application/json;odata.metadata=none'
|
|
43
|
+
},
|
|
44
|
+
responseType: 'json',
|
|
45
|
+
data: manifest
|
|
46
|
+
};
|
|
47
|
+
ownerIds = await this.getUserIds(logger, args.options.ownerIds, args.options.ownerUserNames);
|
|
48
|
+
memberIds = await this.getUserIds(logger, args.options.memberIds, args.options.memberUserNames);
|
|
49
|
+
group = await request.post(requestOptions);
|
|
50
|
+
if (ownerIds.length !== 0) {
|
|
51
|
+
await this.addUsers(group.id, 'owners', ownerIds);
|
|
52
|
+
}
|
|
53
|
+
if (memberIds.length !== 0) {
|
|
54
|
+
await this.addUsers(group.id, 'members', memberIds);
|
|
55
|
+
}
|
|
56
|
+
await logger.log(group);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
this.handleRejectedODataJsonPromise(err);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
;
|
|
63
|
+
createRequestBody(options) {
|
|
64
|
+
const requestBody = {
|
|
65
|
+
displayName: options.displayName,
|
|
66
|
+
description: options.description,
|
|
67
|
+
mailNickName: options.mailNickname ?? this.generateMailNickname(),
|
|
68
|
+
visibility: options.visibility ?? 'Public',
|
|
69
|
+
groupTypes: options.type === 'microsoft365' ? ['Unified'] : [],
|
|
70
|
+
mailEnabled: options.type === 'security' ? false : true,
|
|
71
|
+
securityEnabled: true
|
|
72
|
+
};
|
|
73
|
+
this.addUnknownOptionsToPayload(requestBody, options);
|
|
74
|
+
return requestBody;
|
|
75
|
+
}
|
|
76
|
+
generateMailNickname() {
|
|
77
|
+
return `Group${Math.floor(Math.random() * 1000000)}`;
|
|
78
|
+
}
|
|
79
|
+
async getUserIds(logger, userIds, userNames) {
|
|
80
|
+
if (userIds) {
|
|
81
|
+
return userIds.split(',').map(o => o.trim());
|
|
82
|
+
}
|
|
83
|
+
if (!userNames) {
|
|
84
|
+
if (this.verbose) {
|
|
85
|
+
await logger.logToStderr('No users to validate, skipping.');
|
|
86
|
+
}
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
if (this.verbose) {
|
|
90
|
+
await logger.logToStderr('Retrieving user information.');
|
|
91
|
+
}
|
|
92
|
+
const userArr = userNames.split(',').map(o => o.trim());
|
|
93
|
+
if (this.verbose) {
|
|
94
|
+
await logger.logToStderr('Retrieving ID(s) of user(s)...');
|
|
95
|
+
}
|
|
96
|
+
return entraUser.getUserIdsByUpns(userArr);
|
|
97
|
+
}
|
|
98
|
+
async addUsers(groupId, role, userIds) {
|
|
99
|
+
for (let i = 0; i < userIds.length; i += 400) {
|
|
100
|
+
const userIdsBatch = userIds.slice(i, i + 400);
|
|
101
|
+
const requestOptions = {
|
|
102
|
+
url: `${this.resource}/v1.0/$batch`,
|
|
103
|
+
headers: {
|
|
104
|
+
'content-type': 'application/json;odata.metadata=none'
|
|
105
|
+
},
|
|
106
|
+
responseType: 'json',
|
|
107
|
+
data: {
|
|
108
|
+
requests: []
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
// only 20 requests per one batch are allowed
|
|
112
|
+
for (let j = 0; j < userIdsBatch.length; j += 20) {
|
|
113
|
+
// only 20 users can be added in one request
|
|
114
|
+
const userIdsChunk = userIdsBatch.slice(j, j + 20);
|
|
115
|
+
requestOptions.data.requests.push({
|
|
116
|
+
id: j + 1,
|
|
117
|
+
method: 'PATCH',
|
|
118
|
+
url: `/groups/${groupId}`,
|
|
119
|
+
headers: {
|
|
120
|
+
'content-type': 'application/json;odata.metadata=none'
|
|
121
|
+
},
|
|
122
|
+
body: {
|
|
123
|
+
[`${role}@odata.bind`]: userIdsChunk.map(u => `${this.resource}/v1.0/directoryObjects/${u}`)
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
const res = await request.post(requestOptions);
|
|
128
|
+
for (const response of res.responses) {
|
|
129
|
+
if (response.status !== 204) {
|
|
130
|
+
throw response.body;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
_EntraGroupAddCommand_instances = new WeakSet(), _EntraGroupAddCommand_initOptions = function _EntraGroupAddCommand_initOptions() {
|
|
137
|
+
this.options.unshift({
|
|
138
|
+
option: '-n, --displayName <displayName>'
|
|
139
|
+
}, {
|
|
140
|
+
option: '-d, --description [description]'
|
|
141
|
+
}, {
|
|
142
|
+
option: '-t, --type <type>',
|
|
143
|
+
autocomplete: ['microsoft365', 'security']
|
|
144
|
+
}, {
|
|
145
|
+
option: '-m, --mailNickname [mailNickname]'
|
|
146
|
+
}, {
|
|
147
|
+
option: '--ownerIds [ownerIds]'
|
|
148
|
+
}, {
|
|
149
|
+
option: '--ownerUserNames [ownerUserNames]'
|
|
150
|
+
}, {
|
|
151
|
+
option: '--memberIds [memberIds]'
|
|
152
|
+
}, {
|
|
153
|
+
option: '--memberUserNames [memberUserNames]'
|
|
154
|
+
}, {
|
|
155
|
+
option: '--visibility [visibility]',
|
|
156
|
+
autocomplete: ['Public', 'Private', 'HiddenMembership']
|
|
157
|
+
});
|
|
158
|
+
}, _EntraGroupAddCommand_initValidators = function _EntraGroupAddCommand_initValidators() {
|
|
159
|
+
this.validators.push(async (args) => {
|
|
160
|
+
if (args.options.displayName.length > 256) {
|
|
161
|
+
return `The maximum amount of characters for 'displayName' is 256.`;
|
|
162
|
+
}
|
|
163
|
+
if (args.options.mailNickname) {
|
|
164
|
+
if (!validation.isValidMailNickname(args.options.mailNickname)) {
|
|
165
|
+
return `Value for option 'mailNickname' must contain only characters in the ASCII character set 0-127 except the following: @ () \ [] " ; : <> , SPACE.`;
|
|
166
|
+
}
|
|
167
|
+
if (args.options.mailNickname.length > 64) {
|
|
168
|
+
return `The maximum amount of characters for 'mailNickname' is 64.`;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (args.options.ownerIds) {
|
|
172
|
+
const ids = args.options.ownerIds.split(',').map(i => i.trim());
|
|
173
|
+
if (!validation.isValidGuidArray(ids)) {
|
|
174
|
+
const invalidGuid = ids.find(id => !validation.isValidGuid(id));
|
|
175
|
+
return `'${invalidGuid}' is not a valid GUID for option 'ownerIds'.`;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (args.options.ownerUserNames) {
|
|
179
|
+
const isValidUserPrincipalNameArray = validation.isValidUserPrincipalNameArray(args.options.ownerUserNames.split(',').map(u => u.trim()));
|
|
180
|
+
if (isValidUserPrincipalNameArray !== true) {
|
|
181
|
+
return `User principal name '${isValidUserPrincipalNameArray}' is invalid for option 'ownerUserNames'.`;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (args.options.memberIds) {
|
|
185
|
+
const ids = args.options.memberIds.split(',').map(i => i.trim());
|
|
186
|
+
if (!validation.isValidGuidArray(ids)) {
|
|
187
|
+
const invalidGuid = ids.find(id => !validation.isValidGuid(id));
|
|
188
|
+
return `'${invalidGuid}' is not a valid GUID for option 'memberIds'.`;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (args.options.memberUserNames) {
|
|
192
|
+
const isValidUserPrincipalNameArray = validation.isValidUserPrincipalNameArray(args.options.memberUserNames.split(',').map(u => u.trim()));
|
|
193
|
+
if (isValidUserPrincipalNameArray !== true) {
|
|
194
|
+
return `User principal name '${isValidUserPrincipalNameArray}' is invalid for option 'memberUserNames'.`;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (['microsoft365', 'security'].indexOf(args.options.type) === -1) {
|
|
198
|
+
return `Option 'type' must be one of the following values: microsoft365, security.`;
|
|
199
|
+
}
|
|
200
|
+
if (args.options.type === 'microsoft365' && !args.options.visibility) {
|
|
201
|
+
return `Option 'visibility' must be specified if the option 'type' is set to microsoft365`;
|
|
202
|
+
}
|
|
203
|
+
if (args.options.visibility && ['Public', 'Private', 'HiddenMembership'].indexOf(args.options.visibility) === -1) {
|
|
204
|
+
return `Option 'visibility' must be one of the following values: Public, Private, HiddenMembership.`;
|
|
205
|
+
}
|
|
206
|
+
return true;
|
|
207
|
+
});
|
|
208
|
+
}, _EntraGroupAddCommand_initTelemetry = function _EntraGroupAddCommand_initTelemetry() {
|
|
209
|
+
this.telemetry.push((args) => {
|
|
210
|
+
Object.assign(this.telemetryProperties, {
|
|
211
|
+
displayName: typeof args.options.displayName !== 'undefined',
|
|
212
|
+
description: typeof args.options.description !== 'undefined',
|
|
213
|
+
type: typeof args.options.type !== 'undefined',
|
|
214
|
+
mailNickname: typeof args.options.mailNickname !== 'undefined',
|
|
215
|
+
ownerIds: typeof args.options.ownerIds !== 'undefined',
|
|
216
|
+
ownerUserNames: typeof args.options.ownerUserNames !== 'undefined',
|
|
217
|
+
memberIds: typeof args.options.memberIds !== 'undefined',
|
|
218
|
+
memberUserNames: typeof args.options.memberUserNames !== 'undefined',
|
|
219
|
+
visibility: typeof args.options.visibility !== 'undefined'
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
export default new EntraGroupAddCommand();
|
|
224
|
+
//# sourceMappingURL=group-add.js.map
|
|
@@ -4,7 +4,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
6
|
var _EntraGroupGetCommand_instances, _EntraGroupGetCommand_initOptions, _EntraGroupGetCommand_initValidators, _EntraGroupGetCommand_initOptionSets, _EntraGroupGetCommand_initTelemetry;
|
|
7
|
-
import {
|
|
7
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
8
8
|
import { validation } from '../../../../utils/validation.js';
|
|
9
9
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
10
10
|
import commands from '../../commands.js';
|
|
@@ -31,10 +31,10 @@ class EntraGroupGetCommand extends GraphCommand {
|
|
|
31
31
|
let group;
|
|
32
32
|
try {
|
|
33
33
|
if (args.options.id) {
|
|
34
|
-
group = await
|
|
34
|
+
group = await entraGroup.getGroupById(args.options.id);
|
|
35
35
|
}
|
|
36
36
|
else {
|
|
37
|
-
group = await
|
|
37
|
+
group = await entraGroup.getGroupByDisplayName(args.options.displayName);
|
|
38
38
|
}
|
|
39
39
|
await logger.log(group);
|
|
40
40
|
}
|
|
@@ -8,7 +8,7 @@ import { cli } from '../../../../cli/cli.js';
|
|
|
8
8
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
9
9
|
import commands from '../../commands.js';
|
|
10
10
|
import request from '../../../../request.js';
|
|
11
|
-
import {
|
|
11
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
12
12
|
import { validation } from '../../../../utils/validation.js';
|
|
13
13
|
import aadCommands from '../../aadCommands.js';
|
|
14
14
|
class EntraGroupRemoveCommand extends GraphCommand {
|
|
@@ -38,7 +38,7 @@ class EntraGroupRemoveCommand extends GraphCommand {
|
|
|
38
38
|
try {
|
|
39
39
|
let groupId = args.options.id;
|
|
40
40
|
if (args.options.displayName) {
|
|
41
|
-
groupId = await
|
|
41
|
+
groupId = await entraGroup.getGroupIdByDisplayName(args.options.displayName);
|
|
42
42
|
}
|
|
43
43
|
const requestOptions = {
|
|
44
44
|
url: `${this.resource}/v1.0/groups/${groupId}`,
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _EntraGroupUserAddCommand_instances, _EntraGroupUserAddCommand_initTelemetry, _EntraGroupUserAddCommand_initOptions, _EntraGroupUserAddCommand_initValidators, _EntraGroupUserAddCommand_initOptionSets, _EntraGroupUserAddCommand_initTypes;
|
|
7
|
+
import request from '../../../../request.js';
|
|
8
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
9
|
+
import { entraUser } from '../../../../utils/entraUser.js';
|
|
10
|
+
import { validation } from '../../../../utils/validation.js';
|
|
11
|
+
import GraphCommand from '../../../base/GraphCommand.js';
|
|
12
|
+
import commands from '../../commands.js';
|
|
13
|
+
class EntraGroupUserAddCommand extends GraphCommand {
|
|
14
|
+
get name() {
|
|
15
|
+
return commands.GROUP_USER_ADD;
|
|
16
|
+
}
|
|
17
|
+
get description() {
|
|
18
|
+
return 'Adds a user to a Microsoft Entra ID group';
|
|
19
|
+
}
|
|
20
|
+
constructor() {
|
|
21
|
+
super();
|
|
22
|
+
_EntraGroupUserAddCommand_instances.add(this);
|
|
23
|
+
this.roleValues = ['Owner', 'Member'];
|
|
24
|
+
__classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initTelemetry).call(this);
|
|
25
|
+
__classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initOptions).call(this);
|
|
26
|
+
__classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initValidators).call(this);
|
|
27
|
+
__classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initOptionSets).call(this);
|
|
28
|
+
__classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initTypes).call(this);
|
|
29
|
+
}
|
|
30
|
+
async commandAction(logger, args) {
|
|
31
|
+
try {
|
|
32
|
+
if (this.verbose) {
|
|
33
|
+
await logger.logToStderr(`Adding user(s) ${args.options.ids || args.options.userNames} to group ${args.options.groupId || args.options.groupDisplayName}...`);
|
|
34
|
+
}
|
|
35
|
+
const groupId = await this.getGroupId(logger, args.options);
|
|
36
|
+
const userIds = await this.getUserIds(logger, args.options);
|
|
37
|
+
for (let i = 0; i < userIds.length; i += 400) {
|
|
38
|
+
const userIdsBatch = userIds.slice(i, i + 400);
|
|
39
|
+
const requestOptions = {
|
|
40
|
+
url: `${this.resource}/v1.0/$batch`,
|
|
41
|
+
headers: {
|
|
42
|
+
'content-type': 'application/json;odata.metadata=none'
|
|
43
|
+
},
|
|
44
|
+
responseType: 'json',
|
|
45
|
+
data: {
|
|
46
|
+
requests: []
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
for (let j = 0; j < userIdsBatch.length; j += 20) {
|
|
50
|
+
const userIdsChunk = userIdsBatch.slice(j, j + 20);
|
|
51
|
+
requestOptions.data.requests.push({
|
|
52
|
+
id: j + 1,
|
|
53
|
+
method: 'PATCH',
|
|
54
|
+
url: `/groups/${groupId}`,
|
|
55
|
+
headers: {
|
|
56
|
+
'content-type': 'application/json;odata.metadata=none'
|
|
57
|
+
},
|
|
58
|
+
body: {
|
|
59
|
+
[`${args.options.role === 'Member' ? 'members' : 'owners'}@odata.bind`]: userIdsChunk.map(u => `${this.resource}/v1.0/directoryObjects/${u}`)
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const res = await request.post(requestOptions);
|
|
64
|
+
for (const response of res.responses) {
|
|
65
|
+
if (response.status !== 204) {
|
|
66
|
+
throw response.body;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
this.handleRejectedODataJsonPromise(err);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async getGroupId(logger, options) {
|
|
76
|
+
if (options.groupId) {
|
|
77
|
+
return options.groupId;
|
|
78
|
+
}
|
|
79
|
+
if (this.verbose) {
|
|
80
|
+
await logger.logToStderr(`Retrieving ID of group ${options.groupDisplayName}...`);
|
|
81
|
+
}
|
|
82
|
+
return entraGroup.getGroupIdByDisplayName(options.groupDisplayName);
|
|
83
|
+
}
|
|
84
|
+
async getUserIds(logger, options) {
|
|
85
|
+
if (options.ids) {
|
|
86
|
+
return options.ids.split(',').map(i => i.trim());
|
|
87
|
+
}
|
|
88
|
+
if (this.verbose) {
|
|
89
|
+
await logger.logToStderr('Retrieving ID(s) of user(s)...');
|
|
90
|
+
}
|
|
91
|
+
return entraUser.getUserIdsByUpns(options.userNames.split(',').map(u => u.trim()));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
_EntraGroupUserAddCommand_instances = new WeakSet(), _EntraGroupUserAddCommand_initTelemetry = function _EntraGroupUserAddCommand_initTelemetry() {
|
|
95
|
+
this.telemetry.push((args) => {
|
|
96
|
+
Object.assign(this.telemetryProperties, {
|
|
97
|
+
groupId: typeof args.options.groupId !== 'undefined',
|
|
98
|
+
groupDisplayName: typeof args.options.groupDisplayName !== 'undefined',
|
|
99
|
+
ids: typeof args.options.ids !== 'undefined',
|
|
100
|
+
userNames: typeof args.options.userNames !== 'undefined'
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}, _EntraGroupUserAddCommand_initOptions = function _EntraGroupUserAddCommand_initOptions() {
|
|
104
|
+
this.options.unshift({
|
|
105
|
+
option: '-i, --groupId [groupId]'
|
|
106
|
+
}, {
|
|
107
|
+
option: '-n, --groupDisplayName [groupDisplayName]'
|
|
108
|
+
}, {
|
|
109
|
+
option: '--ids [ids]'
|
|
110
|
+
}, {
|
|
111
|
+
option: '--userNames [userNames]'
|
|
112
|
+
}, {
|
|
113
|
+
option: '-r, --role <role>',
|
|
114
|
+
autocomplete: this.roleValues
|
|
115
|
+
});
|
|
116
|
+
}, _EntraGroupUserAddCommand_initValidators = function _EntraGroupUserAddCommand_initValidators() {
|
|
117
|
+
this.validators.push(async (args) => {
|
|
118
|
+
if (args.options.groupId && !validation.isValidGuid(args.options.groupId)) {
|
|
119
|
+
return `${args.options.groupId} is not a valid GUID for option groupId.`;
|
|
120
|
+
}
|
|
121
|
+
if (args.options.ids) {
|
|
122
|
+
const ids = args.options.ids.split(',').map(i => i.trim());
|
|
123
|
+
if (!validation.isValidGuidArray(ids)) {
|
|
124
|
+
const invalidGuid = ids.find(id => !validation.isValidGuid(id));
|
|
125
|
+
return `'${invalidGuid}' is not a valid GUID for option 'ids'.`;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (args.options.userNames) {
|
|
129
|
+
const isValidUserPrincipalNameArray = validation.isValidUserPrincipalNameArray(args.options.userNames.split(',').map(u => u.trim()));
|
|
130
|
+
if (isValidUserPrincipalNameArray !== true) {
|
|
131
|
+
return `User principal name '${isValidUserPrincipalNameArray}' is invalid for option 'userNames'.`;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (this.roleValues.indexOf(args.options.role) === -1) {
|
|
135
|
+
return `Option 'role' must be one of the following values: ${this.roleValues.join(', ')}.`;
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
});
|
|
139
|
+
}, _EntraGroupUserAddCommand_initOptionSets = function _EntraGroupUserAddCommand_initOptionSets() {
|
|
140
|
+
this.optionSets.push({ options: ['groupId', 'groupDisplayName'] }, { options: ['ids', 'userNames'] });
|
|
141
|
+
}, _EntraGroupUserAddCommand_initTypes = function _EntraGroupUserAddCommand_initTypes() {
|
|
142
|
+
this.types.string.push('groupId', 'groupDisplayName', 'ids', 'userNames', 'role');
|
|
143
|
+
};
|
|
144
|
+
export default new EntraGroupUserAddCommand();
|
|
145
|
+
//# sourceMappingURL=group-user-add.js.map
|
|
@@ -4,7 +4,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
6
|
var _EntraGroupUserListCommand_instances, _EntraGroupUserListCommand_initTelemetry, _EntraGroupUserListCommand_initOptions, _EntraGroupUserListCommand_initOptionSets, _EntraGroupUserListCommand_initValidators;
|
|
7
|
-
import {
|
|
7
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
8
8
|
import { odata } from '../../../../utils/odata.js';
|
|
9
9
|
import { validation } from '../../../../utils/validation.js';
|
|
10
10
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
@@ -64,7 +64,7 @@ class EntraGroupUserListCommand extends GraphCommand {
|
|
|
64
64
|
if (this.verbose) {
|
|
65
65
|
await logger.logToStderr('Retrieving Group Id...');
|
|
66
66
|
}
|
|
67
|
-
return await
|
|
67
|
+
return await entraGroup.getGroupIdByDisplayName(options.groupDisplayName);
|
|
68
68
|
}
|
|
69
69
|
async getUsers(options, role, groupId, logger) {
|
|
70
70
|
const { properties, filter } = options;
|
|
@@ -8,7 +8,7 @@ import { odata } from '../../../../utils/odata.js';
|
|
|
8
8
|
import { validation } from '../../../../utils/validation.js';
|
|
9
9
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
10
10
|
import commands from '../../commands.js';
|
|
11
|
-
import {
|
|
11
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
12
12
|
import aadCommands from '../../aadCommands.js';
|
|
13
13
|
class EntraM365GroupConversationListCommand extends GraphCommand {
|
|
14
14
|
get name() {
|
|
@@ -31,7 +31,7 @@ class EntraM365GroupConversationListCommand extends GraphCommand {
|
|
|
31
31
|
}
|
|
32
32
|
async commandAction(logger, args) {
|
|
33
33
|
try {
|
|
34
|
-
const isUnifiedGroup = await
|
|
34
|
+
const isUnifiedGroup = await entraGroup.isUnifiedGroup(args.options.groupId);
|
|
35
35
|
if (!isUnifiedGroup) {
|
|
36
36
|
throw Error(`Specified group with id '${args.options.groupId}' is not a Microsoft 365 group.`);
|
|
37
37
|
}
|
|
@@ -4,7 +4,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
6
|
var _EntraM365GroupConversationPostListCommand_instances, _EntraM365GroupConversationPostListCommand_initTelemetry, _EntraM365GroupConversationPostListCommand_initOptions, _EntraM365GroupConversationPostListCommand_initValidators, _EntraM365GroupConversationPostListCommand_initOptionSets;
|
|
7
|
-
import {
|
|
7
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
8
8
|
import { formatting } from '../../../../utils/formatting.js';
|
|
9
9
|
import { odata } from '../../../../utils/odata.js';
|
|
10
10
|
import { validation } from '../../../../utils/validation.js';
|
|
@@ -35,7 +35,7 @@ class EntraM365GroupConversationPostListCommand extends GraphCommand {
|
|
|
35
35
|
async commandAction(logger, args) {
|
|
36
36
|
try {
|
|
37
37
|
const retrievedgroupId = await this.getGroupId(args);
|
|
38
|
-
const isUnifiedGroup = await
|
|
38
|
+
const isUnifiedGroup = await entraGroup.isUnifiedGroup(retrievedgroupId);
|
|
39
39
|
if (!isUnifiedGroup) {
|
|
40
40
|
throw Error(`Specified group with id '${retrievedgroupId}' is not a Microsoft 365 group.`);
|
|
41
41
|
}
|
|
@@ -50,7 +50,7 @@ class EntraM365GroupConversationPostListCommand extends GraphCommand {
|
|
|
50
50
|
if (args.options.groupId) {
|
|
51
51
|
return formatting.encodeQueryParameter(args.options.groupId);
|
|
52
52
|
}
|
|
53
|
-
const group = await
|
|
53
|
+
const group = await entraGroup.getGroupByDisplayName(args.options.groupDisplayName);
|
|
54
54
|
return group.id;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
5
5
|
};
|
|
6
6
|
var _EntraM365GroupGetCommand_instances, _EntraM365GroupGetCommand_initOptions, _EntraM365GroupGetCommand_initValidators;
|
|
7
7
|
import request from '../../../../request.js';
|
|
8
|
-
import {
|
|
8
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
9
9
|
import { validation } from '../../../../utils/validation.js';
|
|
10
10
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
11
11
|
import aadCommands from '../../aadCommands.js';
|
|
@@ -29,11 +29,11 @@ class EntraM365GroupGetCommand extends GraphCommand {
|
|
|
29
29
|
async commandAction(logger, args) {
|
|
30
30
|
let group;
|
|
31
31
|
try {
|
|
32
|
-
const isUnifiedGroup = await
|
|
32
|
+
const isUnifiedGroup = await entraGroup.isUnifiedGroup(args.options.id);
|
|
33
33
|
if (!isUnifiedGroup) {
|
|
34
34
|
throw Error(`Specified group with id '${args.options.id}' is not a Microsoft 365 group.`);
|
|
35
35
|
}
|
|
36
|
-
group = await
|
|
36
|
+
group = await entraGroup.getGroupById(args.options.id);
|
|
37
37
|
if (args.options.includeSiteUrl) {
|
|
38
38
|
const requestOptions = {
|
|
39
39
|
url: `${this.resource}/v1.0/groups/${group.id}/drive?$select=webUrl`,
|
|
@@ -6,7 +6,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
6
6
|
var _EntraM365GroupRemoveCommand_instances, _EntraM365GroupRemoveCommand_initTelemetry, _EntraM365GroupRemoveCommand_initOptions, _EntraM365GroupRemoveCommand_initValidators;
|
|
7
7
|
import { cli } from '../../../../cli/cli.js';
|
|
8
8
|
import request from '../../../../request.js';
|
|
9
|
-
import {
|
|
9
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
10
10
|
import { validation } from '../../../../utils/validation.js';
|
|
11
11
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
12
12
|
import commands from '../../commands.js';
|
|
@@ -39,7 +39,7 @@ class EntraM365GroupRemoveCommand extends GraphCommand {
|
|
|
39
39
|
await logger.logToStderr(`Removing Microsoft 365 Group: ${args.options.id}...`);
|
|
40
40
|
}
|
|
41
41
|
try {
|
|
42
|
-
const isUnifiedGroup = await
|
|
42
|
+
const isUnifiedGroup = await entraGroup.isUnifiedGroup(args.options.id);
|
|
43
43
|
if (!isUnifiedGroup) {
|
|
44
44
|
throw Error(`Specified group with id '${args.options.id}' is not a Microsoft 365 group.`);
|
|
45
45
|
}
|
|
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
5
5
|
};
|
|
6
6
|
var _EntraM365GroupRenewCommand_instances, _EntraM365GroupRenewCommand_initOptions, _EntraM365GroupRenewCommand_initValidators;
|
|
7
7
|
import request from '../../../../request.js';
|
|
8
|
-
import {
|
|
8
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
9
9
|
import { validation } from '../../../../utils/validation.js';
|
|
10
10
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
11
11
|
import aadCommands from '../../aadCommands.js';
|
|
@@ -31,7 +31,7 @@ class EntraM365GroupRenewCommand extends GraphCommand {
|
|
|
31
31
|
await logger.logToStderr(`Renewing Microsoft 365 group's expiration: ${args.options.id}...`);
|
|
32
32
|
}
|
|
33
33
|
try {
|
|
34
|
-
const isUnifiedGroup = await
|
|
34
|
+
const isUnifiedGroup = await entraGroup.isUnifiedGroup(args.options.id);
|
|
35
35
|
if (!isUnifiedGroup) {
|
|
36
36
|
throw Error(`Specified group with id '${args.options.id}' is not a Microsoft 365 group.`);
|
|
37
37
|
}
|
|
@@ -6,7 +6,7 @@ class M365GroupReportActivityGroupCountsCommand extends PeriodBasedReport {
|
|
|
6
6
|
return commands.M365GROUP_REPORT_ACTIVITYGROUPCOUNTS;
|
|
7
7
|
}
|
|
8
8
|
get description() {
|
|
9
|
-
return 'Get the daily total number of groups and how many of them were active based on email conversations,
|
|
9
|
+
return 'Get the daily total number of groups and how many of them were active based on email conversations, Viva Engage posts, and SharePoint file activities';
|
|
10
10
|
}
|
|
11
11
|
alias() {
|
|
12
12
|
return [aadCommands.M365GROUP_REPORT_ACTIVITYGROUPCOUNTS];
|
|
@@ -11,7 +11,7 @@ import request from '../../../../request.js';
|
|
|
11
11
|
import { validation } from '../../../../utils/validation.js';
|
|
12
12
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
13
13
|
import commands from '../../commands.js';
|
|
14
|
-
import {
|
|
14
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
15
15
|
import aadCommands from '../../aadCommands.js';
|
|
16
16
|
class EntraM365GroupSetCommand extends GraphCommand {
|
|
17
17
|
get name() {
|
|
@@ -34,7 +34,7 @@ class EntraM365GroupSetCommand extends GraphCommand {
|
|
|
34
34
|
}
|
|
35
35
|
async commandAction(logger, args) {
|
|
36
36
|
try {
|
|
37
|
-
const isUnifiedGroup = await
|
|
37
|
+
const isUnifiedGroup = await entraGroup.isUnifiedGroup(args.options.id);
|
|
38
38
|
if (!isUnifiedGroup) {
|
|
39
39
|
throw Error(`Specified group with id '${args.options.id}' is not a Microsoft 365 group.`);
|
|
40
40
|
}
|
|
@@ -6,7 +6,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
6
6
|
var _EntraM365GroupTeamifyCommand_instances, _EntraM365GroupTeamifyCommand_initTelemetry, _EntraM365GroupTeamifyCommand_initOptions, _EntraM365GroupTeamifyCommand_initValidators, _EntraM365GroupTeamifyCommand_initOptionSets;
|
|
7
7
|
import { cli } from '../../../../cli/cli.js';
|
|
8
8
|
import request from '../../../../request.js';
|
|
9
|
-
import {
|
|
9
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
10
10
|
import { formatting } from '../../../../utils/formatting.js';
|
|
11
11
|
import { validation } from '../../../../utils/validation.js';
|
|
12
12
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
@@ -56,7 +56,7 @@ class EntraM365GroupTeamifyCommand extends GraphCommand {
|
|
|
56
56
|
async commandAction(logger, args) {
|
|
57
57
|
try {
|
|
58
58
|
const groupId = await this.getGroupId(args.options);
|
|
59
|
-
const isUnifiedGroup = await
|
|
59
|
+
const isUnifiedGroup = await entraGroup.isUnifiedGroup(groupId);
|
|
60
60
|
if (!isUnifiedGroup) {
|
|
61
61
|
throw Error(`Specified group with id '${groupId}' is not a Microsoft 365 group.`);
|
|
62
62
|
}
|
|
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
5
5
|
};
|
|
6
6
|
var _EntraM365GroupUserAddCommand_instances, _EntraM365GroupUserAddCommand_initTelemetry, _EntraM365GroupUserAddCommand_initOptions, _EntraM365GroupUserAddCommand_initValidators, _EntraM365GroupUserAddCommand_initOptionSets;
|
|
7
7
|
import request from '../../../../request.js';
|
|
8
|
-
import {
|
|
8
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
9
9
|
import { formatting } from '../../../../utils/formatting.js';
|
|
10
10
|
import { validation } from '../../../../utils/validation.js';
|
|
11
11
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
@@ -33,7 +33,7 @@ class EntraM365GroupUserAddCommand extends GraphCommand {
|
|
|
33
33
|
async commandAction(logger, args) {
|
|
34
34
|
try {
|
|
35
35
|
const providedGroupId = (typeof args.options.groupId !== 'undefined') ? args.options.groupId : args.options.teamId;
|
|
36
|
-
const isUnifiedGroup = await
|
|
36
|
+
const isUnifiedGroup = await entraGroup.isUnifiedGroup(providedGroupId);
|
|
37
37
|
if (!isUnifiedGroup) {
|
|
38
38
|
throw Error(`Specified group with id '${providedGroupId}' is not a Microsoft 365 group.`);
|
|
39
39
|
}
|
|
@@ -8,7 +8,7 @@ import { odata } from '../../../../utils/odata.js';
|
|
|
8
8
|
import { validation } from '../../../../utils/validation.js';
|
|
9
9
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
10
10
|
import commands from '../../commands.js';
|
|
11
|
-
import {
|
|
11
|
+
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
12
12
|
import aadCommands from '../../aadCommands.js';
|
|
13
13
|
class EntraM365GroupUserListCommand extends GraphCommand {
|
|
14
14
|
get name() {
|
|
@@ -34,7 +34,7 @@ class EntraM365GroupUserListCommand extends GraphCommand {
|
|
|
34
34
|
this.warn(logger, `Value 'Guest' for the option role is deprecated. Use --filter "userType eq 'Guest'" instead.`);
|
|
35
35
|
}
|
|
36
36
|
const groupId = await this.getGroupId(args.options, logger);
|
|
37
|
-
const isUnifiedGroup = await
|
|
37
|
+
const isUnifiedGroup = await entraGroup.isUnifiedGroup(groupId);
|
|
38
38
|
if (!isUnifiedGroup) {
|
|
39
39
|
throw Error(`Specified group '${args.options.groupId || args.options.groupDisplayName}' is not a Microsoft 365 group.`);
|
|
40
40
|
}
|
|
@@ -71,7 +71,7 @@ class EntraM365GroupUserListCommand extends GraphCommand {
|
|
|
71
71
|
if (this.verbose) {
|
|
72
72
|
await logger.logToStderr('Retrieving Group Id...');
|
|
73
73
|
}
|
|
74
|
-
return await
|
|
74
|
+
return await entraGroup.getGroupIdByDisplayName(options.groupDisplayName);
|
|
75
75
|
}
|
|
76
76
|
async getUsers(options, role, groupId, logger) {
|
|
77
77
|
const { properties, filter } = options;
|