@pnp/cli-microsoft365 10.6.0-beta.a7465c9 → 10.6.0-beta.add4854
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/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/m365/pp/commands/card/card-clone.js +6 -16
- package/dist/m365/pp/commands/card/card-get.js +10 -19
- package/dist/m365/pp/commands/card/card-remove.js +7 -16
- package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +12 -47
- package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +13 -31
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +12 -43
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +8 -27
- package/dist/utils/powerPlatform.js +30 -1
- package/dist/utils/spo.js +26 -0
- package/package.json +1 -1
|
@@ -4,13 +4,11 @@ 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 _PpCardCloneCommand_instances, _PpCardCloneCommand_initTelemetry, _PpCardCloneCommand_initOptions, _PpCardCloneCommand_initOptionSets, _PpCardCloneCommand_initValidators;
|
|
7
|
-
import { cli } from '../../../../cli/cli.js';
|
|
8
7
|
import request from '../../../../request.js';
|
|
9
8
|
import { powerPlatform } from '../../../../utils/powerPlatform.js';
|
|
10
9
|
import { validation } from '../../../../utils/validation.js';
|
|
11
10
|
import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
|
|
12
11
|
import commands from '../../commands.js';
|
|
13
|
-
import ppCardGetCommand from './card-get.js';
|
|
14
12
|
class PpCardCloneCommand extends PowerPlatformCommand {
|
|
15
13
|
get name() {
|
|
16
14
|
return commands.CARD_CLONE;
|
|
@@ -30,28 +28,20 @@ class PpCardCloneCommand extends PowerPlatformCommand {
|
|
|
30
28
|
if (this.verbose) {
|
|
31
29
|
await logger.logToStderr(`Cloning a card from '${args.options.id || args.options.name}'...`);
|
|
32
30
|
}
|
|
33
|
-
const res = await this.cloneCard(args);
|
|
31
|
+
const res = await this.cloneCard(args, logger);
|
|
34
32
|
await logger.log(res);
|
|
35
33
|
}
|
|
36
|
-
async getCardId(args) {
|
|
34
|
+
async getCardId(args, dynamicsApiUrl, logger) {
|
|
37
35
|
if (args.options.id) {
|
|
38
36
|
return args.options.id;
|
|
39
37
|
}
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
name: args.options.name,
|
|
43
|
-
output: 'json',
|
|
44
|
-
debug: this.debug,
|
|
45
|
-
verbose: this.verbose
|
|
46
|
-
};
|
|
47
|
-
const output = await cli.executeCommandWithOutput(ppCardGetCommand, { options: { ...options, _: [] } });
|
|
48
|
-
const getCardOutput = JSON.parse(output.stdout);
|
|
49
|
-
return getCardOutput.cardid;
|
|
38
|
+
const card = await powerPlatform.getCardByName(dynamicsApiUrl, args.options.name, logger, this.verbose);
|
|
39
|
+
return card.cardid;
|
|
50
40
|
}
|
|
51
|
-
async cloneCard(args) {
|
|
41
|
+
async cloneCard(args, logger) {
|
|
52
42
|
try {
|
|
53
43
|
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
|
|
54
|
-
const cardId = await this.getCardId(args);
|
|
44
|
+
const cardId = await this.getCardId(args, dynamicsApiUrl, logger);
|
|
55
45
|
const requestOptions = {
|
|
56
46
|
url: `${dynamicsApiUrl}/api/data/v9.1/CardCreateClone`,
|
|
57
47
|
headers: {
|
|
@@ -4,13 +4,11 @@ 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 _PpCardGetCommand_instances, _PpCardGetCommand_initTelemetry, _PpCardGetCommand_initOptions, _PpCardGetCommand_initOptionSets, _PpCardGetCommand_initValidators;
|
|
7
|
-
import { cli } from '../../../../cli/cli.js';
|
|
8
7
|
import request from '../../../../request.js';
|
|
9
8
|
import { powerPlatform } from '../../../../utils/powerPlatform.js';
|
|
10
9
|
import { validation } from '../../../../utils/validation.js';
|
|
11
10
|
import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
|
|
12
11
|
import commands from '../../commands.js';
|
|
13
|
-
import { formatting } from '../../../../utils/formatting.js';
|
|
14
12
|
class PpCardGetCommand extends PowerPlatformCommand {
|
|
15
13
|
get name() {
|
|
16
14
|
return commands.CARD_GET;
|
|
@@ -32,35 +30,28 @@ class PpCardGetCommand extends PowerPlatformCommand {
|
|
|
32
30
|
}
|
|
33
31
|
try {
|
|
34
32
|
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
|
|
35
|
-
const res = await this.getCard(dynamicsApiUrl, args.options);
|
|
33
|
+
const res = await this.getCard(dynamicsApiUrl, args.options, logger);
|
|
36
34
|
await logger.log(res);
|
|
37
35
|
}
|
|
38
36
|
catch (err) {
|
|
39
37
|
this.handleRejectedODataJsonPromise(err);
|
|
40
38
|
}
|
|
41
39
|
}
|
|
42
|
-
async getCard(dynamicsApiUrl, options) {
|
|
40
|
+
async getCard(dynamicsApiUrl, options, logger) {
|
|
41
|
+
if (options.name) {
|
|
42
|
+
return await powerPlatform.getCardByName(dynamicsApiUrl, options.name, logger, this.verbose);
|
|
43
|
+
}
|
|
44
|
+
if (this.verbose) {
|
|
45
|
+
await logger.logToStderr(`Retrieving the card with id ${options.id}`);
|
|
46
|
+
}
|
|
43
47
|
const requestOptions = {
|
|
48
|
+
url: `${dynamicsApiUrl}/api/data/v9.1/cards(${options.id})`,
|
|
44
49
|
headers: {
|
|
45
50
|
accept: 'application/json;odata.metadata=none'
|
|
46
51
|
},
|
|
47
52
|
responseType: 'json'
|
|
48
53
|
};
|
|
49
|
-
|
|
50
|
-
requestOptions.url = `${dynamicsApiUrl}/api/data/v9.1/cards(${options.id})`;
|
|
51
|
-
const result = await request.get(requestOptions);
|
|
52
|
-
return result;
|
|
53
|
-
}
|
|
54
|
-
requestOptions.url = `${dynamicsApiUrl}/api/data/v9.1/cards?$filter=name eq '${options.name}'`;
|
|
55
|
-
const result = await request.get(requestOptions);
|
|
56
|
-
if (result.value.length === 0) {
|
|
57
|
-
throw `The specified card '${options.name}' does not exist.`;
|
|
58
|
-
}
|
|
59
|
-
if (result.value.length > 1) {
|
|
60
|
-
const resultAsKeyValuePair = formatting.convertArrayToHashTable('cardid', result.value);
|
|
61
|
-
return cli.handleMultipleResultsFound(`Multiple cards with name '${options.name}' found`, resultAsKeyValuePair);
|
|
62
|
-
}
|
|
63
|
-
return result.value[0];
|
|
54
|
+
return await request.get(requestOptions);
|
|
64
55
|
}
|
|
65
56
|
}
|
|
66
57
|
_PpCardGetCommand_instances = new WeakSet(), _PpCardGetCommand_initTelemetry = function _PpCardGetCommand_initTelemetry() {
|
|
@@ -10,7 +10,6 @@ import { powerPlatform } from '../../../../utils/powerPlatform.js';
|
|
|
10
10
|
import { validation } from '../../../../utils/validation.js';
|
|
11
11
|
import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
|
|
12
12
|
import commands from '../../commands.js';
|
|
13
|
-
import ppCardGetCommand from './card-get.js';
|
|
14
13
|
class PpCardRemoveCommand extends PowerPlatformCommand {
|
|
15
14
|
get name() {
|
|
16
15
|
return commands.CARD_REMOVE;
|
|
@@ -31,34 +30,26 @@ class PpCardRemoveCommand extends PowerPlatformCommand {
|
|
|
31
30
|
await logger.logToStderr(`Removing card '${args.options.id || args.options.name}'...`);
|
|
32
31
|
}
|
|
33
32
|
if (args.options.force) {
|
|
34
|
-
await this.deleteCard(args);
|
|
33
|
+
await this.deleteCard(args, logger);
|
|
35
34
|
}
|
|
36
35
|
else {
|
|
37
36
|
const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove card '${args.options.id || args.options.name}'?` });
|
|
38
37
|
if (result) {
|
|
39
|
-
await this.deleteCard(args);
|
|
38
|
+
await this.deleteCard(args, logger);
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
async getCardId(args) {
|
|
42
|
+
async getCardId(args, dynamicsApiUrl, logger) {
|
|
44
43
|
if (args.options.id) {
|
|
45
44
|
return args.options.id;
|
|
46
45
|
}
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
name: args.options.name,
|
|
50
|
-
output: 'json',
|
|
51
|
-
debug: this.debug,
|
|
52
|
-
verbose: this.verbose
|
|
53
|
-
};
|
|
54
|
-
const output = await cli.executeCommandWithOutput(ppCardGetCommand, { options: { ...options, _: [] } });
|
|
55
|
-
const getCardOutput = JSON.parse(output.stdout);
|
|
56
|
-
return getCardOutput.cardid;
|
|
46
|
+
const card = await powerPlatform.getCardByName(dynamicsApiUrl, args.options.name, logger, this.verbose);
|
|
47
|
+
return card.cardid;
|
|
57
48
|
}
|
|
58
|
-
async deleteCard(args) {
|
|
49
|
+
async deleteCard(args, logger) {
|
|
59
50
|
try {
|
|
60
51
|
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
|
|
61
|
-
const cardId = await this.getCardId(args);
|
|
52
|
+
const cardId = await this.getCardId(args, dynamicsApiUrl, logger);
|
|
62
53
|
const requestOptions = {
|
|
63
54
|
url: `${dynamicsApiUrl}/api/data/v9.1/cards(${cardId})`,
|
|
64
55
|
headers: {
|
|
@@ -4,16 +4,12 @@ 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 _SpoFolderRoleAssignmentAddCommand_instances, _SpoFolderRoleAssignmentAddCommand_initTelemetry, _SpoFolderRoleAssignmentAddCommand_initOptions, _SpoFolderRoleAssignmentAddCommand_initValidators, _SpoFolderRoleAssignmentAddCommand_initTypes;
|
|
7
|
-
import { cli } from '../../../../cli/cli.js';
|
|
8
7
|
import request from '../../../../request.js';
|
|
9
8
|
import { formatting } from '../../../../utils/formatting.js';
|
|
10
9
|
import { urlUtil } from '../../../../utils/urlUtil.js';
|
|
11
10
|
import { validation } from '../../../../utils/validation.js';
|
|
12
11
|
import SpoCommand from '../../../base/SpoCommand.js';
|
|
13
12
|
import commands from '../../commands.js';
|
|
14
|
-
import spoGroupGetCommand from '../group/group-get.js';
|
|
15
|
-
import spoRoleDefinitionFolderCommand from '../roledefinition/roledefinition-list.js';
|
|
16
|
-
import spoUserGetCommand from '../user/user-get.js';
|
|
17
13
|
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
18
14
|
import { spo } from '../../../../utils/spo.js';
|
|
19
15
|
class SpoFolderRoleAssignmentAddCommand extends SpoCommand {
|
|
@@ -38,7 +34,6 @@ class SpoFolderRoleAssignmentAddCommand extends SpoCommand {
|
|
|
38
34
|
const serverRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, args.options.folderUrl);
|
|
39
35
|
const roleFolderUrl = urlUtil.getWebRelativePath(args.options.webUrl, args.options.folderUrl);
|
|
40
36
|
try {
|
|
41
|
-
//await this.getFolderUrl(args.options);
|
|
42
37
|
let requestUrl = `${args.options.webUrl}/_api/web/`;
|
|
43
38
|
if (roleFolderUrl.split('/').length === 2) {
|
|
44
39
|
requestUrl += `GetList('${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
|
|
@@ -46,13 +41,13 @@ class SpoFolderRoleAssignmentAddCommand extends SpoCommand {
|
|
|
46
41
|
else {
|
|
47
42
|
requestUrl += `GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
|
|
48
43
|
}
|
|
49
|
-
const roleDefinitionId = await this.getRoleDefinitionId(args.options);
|
|
44
|
+
const roleDefinitionId = await this.getRoleDefinitionId(args.options, logger);
|
|
50
45
|
let principalId = args.options.principalId;
|
|
51
46
|
if (args.options.upn) {
|
|
52
|
-
principalId = await this.getUserPrincipalId(args.options);
|
|
47
|
+
principalId = await this.getUserPrincipalId(args.options, logger);
|
|
53
48
|
}
|
|
54
49
|
else if (args.options.groupName) {
|
|
55
|
-
principalId = await this.getGroupPrincipalId(args.options);
|
|
50
|
+
principalId = await this.getGroupPrincipalId(args.options, logger);
|
|
56
51
|
}
|
|
57
52
|
else if (args.options.entraGroupId || args.options.entraGroupName) {
|
|
58
53
|
if (this.verbose) {
|
|
@@ -82,50 +77,20 @@ class SpoFolderRoleAssignmentAddCommand extends SpoCommand {
|
|
|
82
77
|
};
|
|
83
78
|
return request.post(requestOptions);
|
|
84
79
|
}
|
|
85
|
-
async getRoleDefinitionId(options) {
|
|
80
|
+
async getRoleDefinitionId(options, logger) {
|
|
86
81
|
if (!options.roleDefinitionName) {
|
|
87
82
|
return options.roleDefinitionId;
|
|
88
83
|
}
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
output: 'json',
|
|
92
|
-
debug: this.debug,
|
|
93
|
-
verbose: this.verbose
|
|
94
|
-
};
|
|
95
|
-
const output = await cli.executeCommandWithOutput(spoRoleDefinitionFolderCommand, { options: { ...roleDefinitionFolderCommandOptions, _: [] } });
|
|
96
|
-
const getRoleDefinitionFolderOutput = JSON.parse(output.stdout);
|
|
97
|
-
const roleDefinition = getRoleDefinitionFolderOutput.find((role) => role.Name === options.roleDefinitionName);
|
|
98
|
-
if (roleDefinition) {
|
|
99
|
-
return roleDefinition.Id;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
throw Error(`The specified role definition name '${options.roleDefinitionName}' does not exist.`);
|
|
103
|
-
}
|
|
84
|
+
const roleDefintion = await spo.getRoleDefintionByName(options.webUrl, options.roleDefinitionName, logger, this.verbose);
|
|
85
|
+
return roleDefintion.Id;
|
|
104
86
|
}
|
|
105
|
-
async getGroupPrincipalId(options) {
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
name: options.groupName,
|
|
109
|
-
output: 'json',
|
|
110
|
-
debug: this.debug,
|
|
111
|
-
verbose: this.verbose
|
|
112
|
-
};
|
|
113
|
-
const output = await cli.executeCommandWithOutput(spoGroupGetCommand, { options: { ...groupGetCommandOptions, _: [] } });
|
|
114
|
-
const getGroupOutput = JSON.parse(output.stdout);
|
|
115
|
-
return getGroupOutput.Id;
|
|
87
|
+
async getGroupPrincipalId(options, logger) {
|
|
88
|
+
const group = await spo.getGroupByName(options.webUrl, options.groupName, logger, this.verbose);
|
|
89
|
+
return group.Id;
|
|
116
90
|
}
|
|
117
|
-
async getUserPrincipalId(options) {
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
email: options.upn,
|
|
121
|
-
id: undefined,
|
|
122
|
-
output: 'json',
|
|
123
|
-
debug: this.debug,
|
|
124
|
-
verbose: this.verbose
|
|
125
|
-
};
|
|
126
|
-
const output = await cli.executeCommandWithOutput(spoUserGetCommand, { options: { ...userGetCommandOptions, _: [] } });
|
|
127
|
-
const getUserOutput = JSON.parse(output.stdout);
|
|
128
|
-
return getUserOutput.Id;
|
|
91
|
+
async getUserPrincipalId(options, logger) {
|
|
92
|
+
const user = await spo.getUserByEmail(options.webUrl, options.upn, logger, this.verbose);
|
|
93
|
+
return user.Id;
|
|
129
94
|
}
|
|
130
95
|
}
|
|
131
96
|
_SpoFolderRoleAssignmentAddCommand_instances = new WeakSet(), _SpoFolderRoleAssignmentAddCommand_initTelemetry = function _SpoFolderRoleAssignmentAddCommand_initTelemetry() {
|
|
@@ -11,8 +11,6 @@ import { urlUtil } from '../../../../utils/urlUtil.js';
|
|
|
11
11
|
import { validation } from '../../../../utils/validation.js';
|
|
12
12
|
import SpoCommand from '../../../base/SpoCommand.js';
|
|
13
13
|
import commands from '../../commands.js';
|
|
14
|
-
import spoGroupGetCommand from '../group/group-get.js';
|
|
15
|
-
import spoUserGetCommand from '../user/user-get.js';
|
|
16
14
|
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
17
15
|
import { spo } from '../../../../utils/spo.js';
|
|
18
16
|
class SpoFolderRoleAssignmentRemoveCommand extends SpoCommand {
|
|
@@ -38,11 +36,12 @@ class SpoFolderRoleAssignmentRemoveCommand extends SpoCommand {
|
|
|
38
36
|
const serverRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, args.options.folderUrl);
|
|
39
37
|
const requestUrl = `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
|
|
40
38
|
try {
|
|
39
|
+
let principalId = args.options.principalId;
|
|
41
40
|
if (args.options.upn) {
|
|
42
|
-
|
|
41
|
+
principalId = await this.getUserPrincipalId(args.options, logger);
|
|
43
42
|
}
|
|
44
43
|
else if (args.options.groupName) {
|
|
45
|
-
|
|
44
|
+
principalId = await this.getGroupPrincipalId(args.options, logger);
|
|
46
45
|
}
|
|
47
46
|
else if (args.options.entraGroupId || args.options.entraGroupName) {
|
|
48
47
|
if (this.verbose) {
|
|
@@ -52,9 +51,9 @@ class SpoFolderRoleAssignmentRemoveCommand extends SpoCommand {
|
|
|
52
51
|
? await entraGroup.getGroupById(args.options.entraGroupId)
|
|
53
52
|
: await entraGroup.getGroupByDisplayName(args.options.entraGroupName);
|
|
54
53
|
const siteUser = await spo.ensureEntraGroup(args.options.webUrl, group);
|
|
55
|
-
|
|
54
|
+
principalId = siteUser.Id;
|
|
56
55
|
}
|
|
57
|
-
await this.removeRoleAssignment(requestUrl,
|
|
56
|
+
await this.removeRoleAssignment(requestUrl, principalId);
|
|
58
57
|
}
|
|
59
58
|
catch (err) {
|
|
60
59
|
this.handleRejectedODataJsonPromise(err);
|
|
@@ -70,9 +69,9 @@ class SpoFolderRoleAssignmentRemoveCommand extends SpoCommand {
|
|
|
70
69
|
}
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
|
-
async removeRoleAssignment(requestUrl,
|
|
72
|
+
async removeRoleAssignment(requestUrl, principalId) {
|
|
74
73
|
const requestOptions = {
|
|
75
|
-
url: `${requestUrl}/roleassignments/removeroleassignment(principalid='${
|
|
74
|
+
url: `${requestUrl}/roleassignments/removeroleassignment(principalid='${principalId}')`,
|
|
76
75
|
method: 'POST',
|
|
77
76
|
headers: {
|
|
78
77
|
'accept': 'application/json;odata=nometadata',
|
|
@@ -82,30 +81,13 @@ class SpoFolderRoleAssignmentRemoveCommand extends SpoCommand {
|
|
|
82
81
|
};
|
|
83
82
|
return request.post(requestOptions);
|
|
84
83
|
}
|
|
85
|
-
async getGroupPrincipalId(options) {
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
name: options.groupName,
|
|
89
|
-
output: 'json',
|
|
90
|
-
debug: this.debug,
|
|
91
|
-
verbose: this.verbose
|
|
92
|
-
};
|
|
93
|
-
const output = await cli.executeCommandWithOutput(spoGroupGetCommand, { options: { ...groupGetCommandOptions, _: [] } });
|
|
94
|
-
const getGroupOutput = JSON.parse(output.stdout);
|
|
95
|
-
return getGroupOutput.Id;
|
|
84
|
+
async getGroupPrincipalId(options, logger) {
|
|
85
|
+
const group = await spo.getGroupByName(options.webUrl, options.groupName, logger, this.verbose);
|
|
86
|
+
return group.Id;
|
|
96
87
|
}
|
|
97
|
-
async getUserPrincipalId(options) {
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
email: options.upn,
|
|
101
|
-
id: undefined,
|
|
102
|
-
output: 'json',
|
|
103
|
-
debug: this.debug,
|
|
104
|
-
verbose: this.verbose
|
|
105
|
-
};
|
|
106
|
-
const output = await cli.executeCommandWithOutput(spoUserGetCommand, { options: { ...userGetCommandOptions, _: [] } });
|
|
107
|
-
const getUserOutput = JSON.parse(output.stdout);
|
|
108
|
-
return getUserOutput.Id;
|
|
88
|
+
async getUserPrincipalId(options, logger) {
|
|
89
|
+
const user = await spo.getUserByEmail(options.webUrl, options.upn, logger, this.verbose);
|
|
90
|
+
return user.Id;
|
|
109
91
|
}
|
|
110
92
|
}
|
|
111
93
|
_SpoFolderRoleAssignmentRemoveCommand_instances = new WeakSet(), _SpoFolderRoleAssignmentRemoveCommand_initTelemetry = function _SpoFolderRoleAssignmentRemoveCommand_initTelemetry() {
|
|
@@ -4,7 +4,6 @@ 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 _SpoListItemRoleAssignmentAddCommand_instances, _SpoListItemRoleAssignmentAddCommand_initTelemetry, _SpoListItemRoleAssignmentAddCommand_initOptions, _SpoListItemRoleAssignmentAddCommand_initValidators;
|
|
7
|
-
import { cli } from '../../../../cli/cli.js';
|
|
8
7
|
import request from '../../../../request.js';
|
|
9
8
|
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
10
9
|
import { formatting } from '../../../../utils/formatting.js';
|
|
@@ -12,9 +11,6 @@ import { urlUtil } from '../../../../utils/urlUtil.js';
|
|
|
12
11
|
import { validation } from '../../../../utils/validation.js';
|
|
13
12
|
import SpoCommand from '../../../base/SpoCommand.js';
|
|
14
13
|
import commands from '../../commands.js';
|
|
15
|
-
import spoGroupGetCommand from '../group/group-get.js';
|
|
16
|
-
import spoRoleDefinitionListCommand from '../roledefinition/roledefinition-list.js';
|
|
17
|
-
import spoUserGetCommand from '../user/user-get.js';
|
|
18
14
|
import { spo } from '../../../../utils/spo.js';
|
|
19
15
|
class SpoListItemRoleAssignmentAddCommand extends SpoCommand {
|
|
20
16
|
get name() {
|
|
@@ -47,15 +43,13 @@ class SpoListItemRoleAssignmentAddCommand extends SpoCommand {
|
|
|
47
43
|
requestUrl += `GetList('${formatting.encodeQueryParameter(listServerRelativeUrl)}')/`;
|
|
48
44
|
}
|
|
49
45
|
requestUrl += `items(${args.options.listItemId})/`;
|
|
50
|
-
const roleDefinitionId = await this.getRoleDefinitionId(args.options);
|
|
46
|
+
const roleDefinitionId = await this.getRoleDefinitionId(args.options, logger);
|
|
51
47
|
let principalId = args.options.principalId;
|
|
52
48
|
if (args.options.upn) {
|
|
53
|
-
principalId = await this.getUserPrincipalId(args.options);
|
|
54
|
-
await this.addRoleAssignment(requestUrl, roleDefinitionId, principalId);
|
|
49
|
+
principalId = await this.getUserPrincipalId(args.options, logger);
|
|
55
50
|
}
|
|
56
51
|
else if (args.options.groupName) {
|
|
57
|
-
principalId = await this.getGroupPrincipalId(args.options);
|
|
58
|
-
await this.addRoleAssignment(requestUrl, roleDefinitionId, principalId);
|
|
52
|
+
principalId = await this.getGroupPrincipalId(args.options, logger);
|
|
59
53
|
}
|
|
60
54
|
else if (args.options.entraGroupId || args.options.entraGroupName) {
|
|
61
55
|
if (this.verbose) {
|
|
@@ -85,45 +79,20 @@ class SpoListItemRoleAssignmentAddCommand extends SpoCommand {
|
|
|
85
79
|
};
|
|
86
80
|
await request.post(requestOptions);
|
|
87
81
|
}
|
|
88
|
-
async getRoleDefinitionId(options) {
|
|
82
|
+
async getRoleDefinitionId(options, logger) {
|
|
89
83
|
if (!options.roleDefinitionName) {
|
|
90
84
|
return options.roleDefinitionId;
|
|
91
85
|
}
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
output: 'json',
|
|
95
|
-
debug: this.debug,
|
|
96
|
-
verbose: this.verbose
|
|
97
|
-
};
|
|
98
|
-
const output = await cli.executeCommandWithOutput(spoRoleDefinitionListCommand, { options: { ...roleDefinitionListCommandOptions, _: [] } });
|
|
99
|
-
const getRoleDefinitionListOutput = JSON.parse(output.stdout);
|
|
100
|
-
const roleDefinitionId = getRoleDefinitionListOutput.find((role) => role.Name === options.roleDefinitionName).Id;
|
|
101
|
-
return roleDefinitionId;
|
|
86
|
+
const roleDefintion = await spo.getRoleDefinitionByName(options.webUrl, options.roleDefinitionName, logger, this.verbose);
|
|
87
|
+
return roleDefintion.Id;
|
|
102
88
|
}
|
|
103
|
-
async getGroupPrincipalId(options) {
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
name: options.groupName,
|
|
107
|
-
output: 'json',
|
|
108
|
-
debug: this.debug,
|
|
109
|
-
verbose: this.verbose
|
|
110
|
-
};
|
|
111
|
-
const output = await cli.executeCommandWithOutput(spoGroupGetCommand, { options: { ...groupGetCommandOptions, _: [] } });
|
|
112
|
-
const getGroupOutput = JSON.parse(output.stdout);
|
|
113
|
-
return getGroupOutput.Id;
|
|
89
|
+
async getGroupPrincipalId(options, logger) {
|
|
90
|
+
const group = await spo.getGroupByName(options.webUrl, options.groupName, logger, this.verbose);
|
|
91
|
+
return group.Id;
|
|
114
92
|
}
|
|
115
|
-
async getUserPrincipalId(options) {
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
email: options.upn,
|
|
119
|
-
id: undefined,
|
|
120
|
-
output: 'json',
|
|
121
|
-
debug: this.debug,
|
|
122
|
-
verbose: this.verbose
|
|
123
|
-
};
|
|
124
|
-
const output = await cli.executeCommandWithOutput(spoUserGetCommand, { options: { ...userGetCommandOptions, _: [] } });
|
|
125
|
-
const getUserOutput = JSON.parse(output.stdout);
|
|
126
|
-
return getUserOutput.Id;
|
|
93
|
+
async getUserPrincipalId(options, logger) {
|
|
94
|
+
const user = await spo.getUserByEmail(options.webUrl, options.upn, logger, this.verbose);
|
|
95
|
+
return user.Id;
|
|
127
96
|
}
|
|
128
97
|
}
|
|
129
98
|
_SpoListItemRoleAssignmentAddCommand_instances = new WeakSet(), _SpoListItemRoleAssignmentAddCommand_initTelemetry = function _SpoListItemRoleAssignmentAddCommand_initTelemetry() {
|
|
@@ -11,8 +11,6 @@ import { urlUtil } from '../../../../utils/urlUtil.js';
|
|
|
11
11
|
import { validation } from '../../../../utils/validation.js';
|
|
12
12
|
import SpoCommand from '../../../base/SpoCommand.js';
|
|
13
13
|
import commands from '../../commands.js';
|
|
14
|
-
import spoGroupGetCommand from '../group/group-get.js';
|
|
15
|
-
import spoUserGetCommand from '../user/user-get.js';
|
|
16
14
|
import { entraGroup } from '../../../../utils/entraGroup.js';
|
|
17
15
|
import { spo } from '../../../../utils/spo.js';
|
|
18
16
|
class SpoListItemRoleAssignmentRemoveCommand extends SpoCommand {
|
|
@@ -59,10 +57,10 @@ class SpoListItemRoleAssignmentRemoveCommand extends SpoCommand {
|
|
|
59
57
|
}
|
|
60
58
|
requestUrl += `items(${options.listItemId})/`;
|
|
61
59
|
if (options.upn) {
|
|
62
|
-
options.principalId = await this.getUserPrincipalId(options);
|
|
60
|
+
options.principalId = await this.getUserPrincipalId(options, logger);
|
|
63
61
|
}
|
|
64
62
|
else if (options.groupName) {
|
|
65
|
-
options.principalId = await this.getGroupPrincipalId(options);
|
|
63
|
+
options.principalId = await this.getGroupPrincipalId(options, logger);
|
|
66
64
|
}
|
|
67
65
|
else if (options.entraGroupId || options.entraGroupName) {
|
|
68
66
|
if (this.verbose) {
|
|
@@ -92,30 +90,13 @@ class SpoListItemRoleAssignmentRemoveCommand extends SpoCommand {
|
|
|
92
90
|
};
|
|
93
91
|
await request.post(requestOptions);
|
|
94
92
|
}
|
|
95
|
-
async getGroupPrincipalId(options) {
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
name: options.groupName,
|
|
99
|
-
output: 'json',
|
|
100
|
-
debug: this.debug,
|
|
101
|
-
verbose: this.verbose
|
|
102
|
-
};
|
|
103
|
-
const output = await cli.executeCommandWithOutput(spoGroupGetCommand, { options: { ...groupGetCommandOptions, _: [] } });
|
|
104
|
-
const getGroupOutput = JSON.parse(output.stdout);
|
|
105
|
-
return getGroupOutput.Id;
|
|
93
|
+
async getGroupPrincipalId(options, logger) {
|
|
94
|
+
const group = await spo.getGroupByName(options.webUrl, options.groupName, logger, this.verbose);
|
|
95
|
+
return group.Id;
|
|
106
96
|
}
|
|
107
|
-
async getUserPrincipalId(options) {
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
email: options.upn,
|
|
111
|
-
id: undefined,
|
|
112
|
-
output: 'json',
|
|
113
|
-
debug: this.debug,
|
|
114
|
-
verbose: this.verbose
|
|
115
|
-
};
|
|
116
|
-
const output = await cli.executeCommandWithOutput(spoUserGetCommand, { options: { ...userGetCommandOptions, _: [] } });
|
|
117
|
-
const getUserOutput = JSON.parse(output.stdout);
|
|
118
|
-
return getUserOutput.Id;
|
|
97
|
+
async getUserPrincipalId(options, logger) {
|
|
98
|
+
const user = await spo.getUserByEmail(options.webUrl, options.upn, logger, this.verbose);
|
|
99
|
+
return user.Id;
|
|
119
100
|
}
|
|
120
101
|
}
|
|
121
102
|
_SpoListItemRoleAssignmentRemoveCommand_instances = new WeakSet(), _SpoListItemRoleAssignmentRemoveCommand_initTelemetry = function _SpoListItemRoleAssignmentRemoveCommand_initTelemetry() {
|
|
@@ -51,7 +51,7 @@ export const powerPlatform = {
|
|
|
51
51
|
}
|
|
52
52
|
if (items.length > 1) {
|
|
53
53
|
const resultAsKeyValuePair = formatting.convertArrayToHashTable('websiteUrl', items);
|
|
54
|
-
return cli.handleMultipleResultsFound(`Multiple Power Page websites with name '${websiteName}' found
|
|
54
|
+
return cli.handleMultipleResultsFound(`Multiple Power Page websites with name '${websiteName}' found.`, resultAsKeyValuePair);
|
|
55
55
|
}
|
|
56
56
|
return items[0];
|
|
57
57
|
},
|
|
@@ -62,6 +62,35 @@ export const powerPlatform = {
|
|
|
62
62
|
throw Error(`The specified Power Page website with url '${url}' does not exist.`);
|
|
63
63
|
}
|
|
64
64
|
return items[0];
|
|
65
|
+
},
|
|
66
|
+
/**
|
|
67
|
+
* Get a card by name
|
|
68
|
+
* Returns a card object
|
|
69
|
+
* @param dynamicsApiUrl The dynamics api url of the environment
|
|
70
|
+
* @param name The name of the card
|
|
71
|
+
* @param logger The logger object
|
|
72
|
+
* @param verbose Set for verbose logging
|
|
73
|
+
*/
|
|
74
|
+
async getCardByName(dynamicsApiUrl, name, logger, verbose) {
|
|
75
|
+
if (verbose && logger) {
|
|
76
|
+
await logger.logToStderr(`Retrieving the card with name ${name}`);
|
|
77
|
+
}
|
|
78
|
+
const requestOptions = {
|
|
79
|
+
url: `${dynamicsApiUrl}/api/data/v9.1/cards?$filter=name eq '${name}'`,
|
|
80
|
+
headers: {
|
|
81
|
+
accept: 'application/json;odata.metadata=none'
|
|
82
|
+
},
|
|
83
|
+
responseType: 'json'
|
|
84
|
+
};
|
|
85
|
+
const result = await request.get(requestOptions);
|
|
86
|
+
if (result.value.length === 0) {
|
|
87
|
+
throw Error(`The specified card '${name}' does not exist.`);
|
|
88
|
+
}
|
|
89
|
+
if (result.value.length > 1) {
|
|
90
|
+
const resultAsKeyValuePair = formatting.convertArrayToHashTable('cardid', result.value);
|
|
91
|
+
return cli.handleMultipleResultsFound(`Multiple cards with name '${name}' found.`, resultAsKeyValuePair);
|
|
92
|
+
}
|
|
93
|
+
return result.value[0];
|
|
65
94
|
}
|
|
66
95
|
};
|
|
67
96
|
//# sourceMappingURL=powerPlatform.js.map
|
package/dist/utils/spo.js
CHANGED
|
@@ -618,10 +618,12 @@ export const spo = {
|
|
|
618
618
|
/**
|
|
619
619
|
* Retrieves the role definition by name.
|
|
620
620
|
* Returns a RoleDefinition object
|
|
621
|
+
* Returns a RoleDefinition object
|
|
621
622
|
* @param webUrl Web url
|
|
622
623
|
* @param name the name of the role definition
|
|
623
624
|
* @param logger the Logger object
|
|
624
625
|
* @param verbose Set for verbose logging
|
|
626
|
+
* @param verbose Set for verbose logging
|
|
625
627
|
*/
|
|
626
628
|
async getRoleDefinitionByName(webUrl, name, logger, verbose) {
|
|
627
629
|
if (verbose && logger) {
|
|
@@ -1756,6 +1758,30 @@ export const spo = {
|
|
|
1756
1758
|
responseType: 'json'
|
|
1757
1759
|
};
|
|
1758
1760
|
return request.post(requestOptions);
|
|
1761
|
+
},
|
|
1762
|
+
/**
|
|
1763
|
+
* Get a role definition by name
|
|
1764
|
+
* Returns a RoleDefinition object
|
|
1765
|
+
* @param webUrl The web url
|
|
1766
|
+
* @param name the name of the role definition
|
|
1767
|
+
* @param logger The logger object
|
|
1768
|
+
* @param verbose Set for verbose logging
|
|
1769
|
+
*/
|
|
1770
|
+
async getRoleDefintionByName(webUrl, name, logger, verbose) {
|
|
1771
|
+
if (verbose && logger) {
|
|
1772
|
+
await logger.logToStderr(`Retrieving the role definition by name ${name}`);
|
|
1773
|
+
}
|
|
1774
|
+
const response = await odata.getAllItems(`${webUrl}/_api/web/roledefinitions`);
|
|
1775
|
+
const roleDefinition = response.find((role) => role.Name === name);
|
|
1776
|
+
if (!roleDefinition) {
|
|
1777
|
+
throw new Error(`The specified role definition name '${name}' does not exist.`);
|
|
1778
|
+
}
|
|
1779
|
+
const permissions = new BasePermissions();
|
|
1780
|
+
permissions.high = roleDefinition.BasePermissions.High;
|
|
1781
|
+
permissions.low = roleDefinition.BasePermissions.Low;
|
|
1782
|
+
roleDefinition.BasePermissionsValue = permissions.parse();
|
|
1783
|
+
roleDefinition.RoleTypeKindValue = RoleType[roleDefinition.RoleTypeKind];
|
|
1784
|
+
return roleDefinition;
|
|
1759
1785
|
}
|
|
1760
1786
|
};
|
|
1761
1787
|
//# sourceMappingURL=spo.js.map
|
package/package.json
CHANGED