@pnp/cli-microsoft365 4.3.0-beta.fd397f5 → 5.0.0-beta.117f66f

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.
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs = require("fs");
4
+ const cli_1 = require("../../cli");
5
+ const Command_1 = require("../../Command");
6
+ const Utils_1 = require("../../Utils");
7
+ class AppCommand extends Command_1.default {
8
+ get resource() {
9
+ return 'https://graph.microsoft.com';
10
+ }
11
+ action(logger, args, cb) {
12
+ const m365rcJsonPath = '.m365rc.json';
13
+ if (!fs.existsSync(m365rcJsonPath)) {
14
+ return cb(new Command_1.CommandError(`Could not find file: ${m365rcJsonPath}`));
15
+ }
16
+ try {
17
+ const m365rcJsonContents = fs.readFileSync(m365rcJsonPath, 'utf8');
18
+ if (!m365rcJsonContents) {
19
+ return cb(new Command_1.CommandError(`File ${m365rcJsonPath} is empty`));
20
+ }
21
+ this.m365rcJson = JSON.parse(m365rcJsonContents);
22
+ }
23
+ catch (e) {
24
+ return cb(new Command_1.CommandError(`Could not parse file: ${m365rcJsonPath}`));
25
+ }
26
+ if (!this.m365rcJson.apps ||
27
+ this.m365rcJson.apps.length === 0) {
28
+ return cb(new Command_1.CommandError(`No Azure AD apps found in ${m365rcJsonPath}`));
29
+ }
30
+ if (args.options.appId) {
31
+ if (!this.m365rcJson.apps.some(app => app.appId === args.options.appId)) {
32
+ return cb(new Command_1.CommandError(`App ${args.options.appId} not found in ${m365rcJsonPath}`));
33
+ }
34
+ this.appId = args.options.appId;
35
+ return super.action(logger, args, cb);
36
+ }
37
+ if (this.m365rcJson.apps.length === 1) {
38
+ this.appId = this.m365rcJson.apps[0].appId;
39
+ return super.action(logger, args, cb);
40
+ }
41
+ if (this.m365rcJson.apps.length > 1) {
42
+ cli_1.Cli.prompt({
43
+ message: `Multiple Azure AD apps found in ${m365rcJsonPath}. Which app would you like to use?`,
44
+ type: 'list',
45
+ choices: this.m365rcJson.apps.map((app, i) => {
46
+ return {
47
+ name: `${app.name} (${app.appId})`,
48
+ value: i
49
+ };
50
+ }),
51
+ default: 0,
52
+ name: 'appIdIndex'
53
+ }, (result) => {
54
+ this.appId = this.m365rcJson.apps[result.appIdIndex].appId;
55
+ super.action(logger, args, cb);
56
+ });
57
+ }
58
+ }
59
+ options() {
60
+ const options = [
61
+ {
62
+ option: '--appId [appId]'
63
+ }
64
+ ];
65
+ const parentOptions = super.options();
66
+ return options.concat(parentOptions);
67
+ }
68
+ validate(args) {
69
+ if (args.options.appId && !Utils_1.default.isValidGuid(args.options.appId)) {
70
+ return `${args.options.appId} is not a valid GUID`;
71
+ }
72
+ return true;
73
+ }
74
+ }
75
+ exports.default = AppCommand;
76
+ //# sourceMappingURL=AppCommand.js.map
@@ -12,8 +12,14 @@ class PaAppListCommand extends AzmgmtItemsListCommand_1.AzmgmtItemsListCommand {
12
12
  defaultProperties() {
13
13
  return ['name', 'displayName'];
14
14
  }
15
+ getTelemetryProperties(args) {
16
+ const telemetryProps = super.getTelemetryProperties(args);
17
+ telemetryProps.asAdmin = args.options.asAdmin === true;
18
+ telemetryProps.environment = typeof args.options.environment !== 'undefined';
19
+ return telemetryProps;
20
+ }
15
21
  commandAction(logger, args, cb) {
16
- const url = `${this.resource}providers/Microsoft.PowerApps/apps?api-version=2017-08-01`;
22
+ const url = `${this.resource}providers/Microsoft.PowerApps${args.options.asAdmin ? '/scopes/admin' : ''}${args.options.environment ? '/environments/' + encodeURIComponent(args.options.environment) : ''}/apps?api-version=2017-08-01`;
17
23
  this
18
24
  .getAllItems(url, logger, true)
19
25
  .then(() => {
@@ -31,6 +37,27 @@ class PaAppListCommand extends AzmgmtItemsListCommand_1.AzmgmtItemsListCommand {
31
37
  cb();
32
38
  }, (rawRes) => this.handleRejectedODataJsonPromise(rawRes, logger, cb));
33
39
  }
40
+ options() {
41
+ const options = [
42
+ {
43
+ option: '-e, --environment [environment]'
44
+ },
45
+ {
46
+ option: '--asAdmin'
47
+ }
48
+ ];
49
+ const parentOptions = super.options();
50
+ return options.concat(parentOptions);
51
+ }
52
+ validate(args) {
53
+ if (args.options.asAdmin && !args.options.environment) {
54
+ return 'When specifying the asAdmin option the environment option is required as well';
55
+ }
56
+ if (args.options.environment && !args.options.asAdmin) {
57
+ return 'When specifying the environment option the asAdmin option is required as well';
58
+ }
59
+ return true;
60
+ }
34
61
  }
35
62
  module.exports = new PaAppListCommand();
36
63
  //# sourceMappingURL=app-list.js.map
package/dist/request.js CHANGED
@@ -16,7 +16,9 @@ class Request {
16
16
  decompress: true,
17
17
  responseType: 'text',
18
18
  /* c8 ignore next */
19
- transformResponse: [data => data]
19
+ transformResponse: [data => data],
20
+ maxBodyLength: Infinity,
21
+ maxContentLength: Infinity
20
22
  });
21
23
  // since we're stubbing requests, request interceptor is never called in
22
24
  // tests, so let's exclude it from coverage
@@ -64,7 +66,7 @@ class Request {
64
66
  });
65
67
  // since we're stubbing requests, response interceptor is never called in
66
68
  // tests, so let's exclude it from coverage
67
- /* c8 ignore next 22 */
69
+ /* c8 ignore next 26 */
68
70
  this.req.interceptors.response.use((response) => {
69
71
  if (this._logger) {
70
72
  this._logger.logToStderr('Response:');
@@ -73,19 +75,22 @@ class Request {
73
75
  response.headers['content-type'].indexOf('json') > -1) {
74
76
  properties.push('data');
75
77
  }
76
- this._logger.logToStderr(JSON.stringify(Utils_1.default.filterObject(response, properties), null, 2));
78
+ this._logger.logToStderr(JSON.stringify(Object.assign({ url: response.config.url }, Utils_1.default.filterObject(response, properties)), null, 2));
77
79
  }
78
80
  return response;
79
81
  }, (error) => {
80
82
  if (this._logger) {
81
83
  const properties = ['status', 'statusText', 'headers'];
82
84
  this._logger.logToStderr('Request error:');
83
- this._logger.logToStderr(JSON.stringify(Object.assign(Object.assign({}, Utils_1.default.filterObject(error.response, properties)), { error: error.error }), null, 2));
85
+ this._logger.logToStderr(JSON.stringify(Object.assign(Object.assign({ url: error.config.url }, Utils_1.default.filterObject(error.response, properties)), { error: error.error }), null, 2));
84
86
  }
85
87
  throw error;
86
88
  });
87
89
  }
88
90
  }
91
+ get logger() {
92
+ return this._logger;
93
+ }
89
94
  set logger(logger) {
90
95
  this._logger = logger;
91
96
  }
@@ -5,10 +5,10 @@
5
5
  : JMESPath query string. See [http://jmespath.org/](http://jmespath.org/) for more information and examples
6
6
 
7
7
  `-o, --output [output]`
8
- : Output type. `json,text`. Default `text`
8
+ : Output type. `json,text,csv`. Default `json`
9
9
 
10
10
  `--verbose`
11
11
  : Runs command with verbose logging
12
12
 
13
13
  `--debug`
14
- : Runs command with debug logging
14
+ : Runs command with debug logging
@@ -10,7 +10,7 @@ m365 aad oauth2grant list [options]
10
10
 
11
11
  ## Options
12
12
 
13
- `-i, --clientId <clientId>`
13
+ `-i, --spObjectId <spObjectId>`
14
14
  : objectId of the service principal for which the configured OAuth2 permission grants should be retrieved
15
15
 
16
16
  --8<-- "docs/cmd/_global.md"
@@ -26,9 +26,10 @@ When using the text output type (default), the command lists only the values of
26
26
  List OAuth2 permissions granted to service principal with `objectId` _b2307a39-e878-458b-bc90-03bc578531d6_.
27
27
 
28
28
  ```sh
29
- m365 aad oauth2grant list --clientId b2307a39-e878-458b-bc90-03bc578531d6
29
+ m365 aad oauth2grant list --spObjectId b2307a39-e878-458b-bc90-03bc578531d6
30
30
  ```
31
31
 
32
32
  ## More information
33
33
 
34
- - Application and service principal objects in Azure Active Directory (Azure AD): [https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects)
34
+ - Application and service principal objects in Azure Active Directory (Azure AD): [https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects)
35
+ - List oauth2PermissionGrants: [https://docs.microsoft.com/en-us/graph/api/oauth2permissiongrant-list?view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/oauth2permissiongrant-list?view=graph-rest-1.0)
@@ -13,6 +13,9 @@ m365 aad oauth2grant remove [options]
13
13
  `-i, --grantId <grantId>`
14
14
  : `objectId` of OAuth2 permission grant to remove
15
15
 
16
+ `--confirm`
17
+ : Do not prompt for confirmation before removing OAuth2 permission grant
18
+
16
19
  --8<-- "docs/cmd/_global.md"
17
20
 
18
21
  ## Remarks
@@ -33,6 +36,12 @@ Remove the OAuth2 permission grant with ID _YgA60KYa4UOPSdc-lpxYEnQkr8KVLDpCsOXk
33
36
  m365 aad oauth2grant remove --grantId YgA60KYa4UOPSdc-lpxYEnQkr8KVLDpCsOXkiV8i-ek
34
37
  ```
35
38
 
39
+ Remove the OAuth2 permission grant with ID _YgA60KYa4UOPSdc-lpxYEnQkr8KVLDpCsOXkiV8i-ek_ without being asked for confirmation
40
+
41
+ ```sh
42
+ m365 aad oauth2grant remove --grantId YgA60KYa4UOPSdc-lpxYEnQkr8KVLDpCsOXkiV8i-ek --confirm
43
+ ```
44
+
36
45
  ## More information
37
46
 
38
47
  - Application and service principal objects in Azure Active Directory (Azure AD): [https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects)
@@ -47,4 +47,5 @@ m365 aad sp get --objectId b2307a39-e878-458b-bc90-03bc578531dd
47
47
 
48
48
  ## More information
49
49
 
50
- - Application and service principal objects in Azure Active Directory (Azure AD): [https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects)
50
+ - Application and service principal objects in Azure Active Directory (Azure AD): [https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects)
51
+ - Get servicePrincipal: [https://docs.microsoft.com/en-us/graph/api/serviceprincipal-get?view=graph-rest-1.0](https://docs.microsoft.com/en-us/graph/api/serviceprincipal-get?view=graph-rest-1.0)
@@ -0,0 +1,29 @@
1
+ # aad user password validate
2
+
3
+ Check a user's password against the organization's password validation policy
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 aad user password validate [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `-p, --password <password>`
14
+ : The password to be validated.
15
+
16
+ --8<-- "docs/cmd/_global.md"
17
+
18
+ ## Remarks
19
+
20
+ !!! attention
21
+ This command is based on an API that is currently in preview and is subject to change once the API reached general availability.
22
+
23
+ ## Examples
24
+
25
+ Validate password _cli365P@ssW0rd_ against the organization's password validation policy
26
+
27
+ ```sh
28
+ m365 aad user password validate --password "cli365P@ssW0rd"
29
+ ```
@@ -0,0 +1,36 @@
1
+ # app permission list
2
+
3
+ Lists API permissions for the current AAD app
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 app permission list [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `--appId [appId]`
14
+ : Client ID of the Azure AD app registered in the .m365rc.json file to retrieve API permissions for
15
+
16
+ --8<-- "docs/cmd/_global.md"
17
+
18
+ ## Remarks
19
+
20
+ Use this command to quickly look up API permissions for the Azure AD application registration registered in the .m365rc.json file in your current project (folder).
21
+
22
+ If you have multiple apps registered in your .m365rc.json file, you can specify the app for which you'd like to retrieve permissions using the `--appId` option. If you don't specify the app using the `--appId` option, you'll be prompted to select one of the applications from your .m365rc.json file.
23
+
24
+ ## Examples
25
+
26
+ Retrieve API permissions for your current Azure AD app
27
+
28
+ ```sh
29
+ m365 app permission list
30
+ ```
31
+
32
+ Retrieve API permissions for the Azure AD app with client ID _e23d235c-fcdf-45d1-ac5f-24ab2ee0695d_ specified in the _.m365rc.json_ file
33
+
34
+ ```sh
35
+ m365 app permission list --appId e23d235c-fcdf-45d1-ac5f-24ab2ee0695d
36
+ ```
@@ -10,6 +10,12 @@ pa app list [options]
10
10
 
11
11
  ## Options
12
12
 
13
+ `-e, --environment [environment]`
14
+ : The name of the environment for which to retrieve available apps
15
+
16
+ `--asAdmin`
17
+ : Set, to list all Power Apps as admin. Otherwise will return only your own apps
18
+
13
19
  --8<-- "docs/cmd/_global.md"
14
20
 
15
21
  ## Remarks
@@ -17,10 +23,20 @@ pa app list [options]
17
23
  !!! attention
18
24
  This command is based on an API that is currently in preview and is subject to change once the API reaches general availability.
19
25
 
26
+ If the environment with the name you specified doesn't exist, you will get the `Access to the environment 'xyz' is denied.` error.
27
+
28
+ By default, the `app list` command returns only your apps. To list all apps, use the `asAdmin` option and make sure to specify the `environment` option. You cannot specify only one of the options, when specifying the `environment` option the `asAdmin` option has to be present as well.
29
+
20
30
  ## Examples
21
31
 
22
- List all apps
32
+ List all your apps
23
33
 
24
34
  ```sh
25
35
  m365 pa app list
26
36
  ```
37
+
38
+ List all apps in a given environment
39
+
40
+ ```sh
41
+ m365 pa app list --environment Default-d87a7535-dd31-4437-bfe1-95340acd55c5 --asAdmin
42
+ ```
@@ -20,7 +20,7 @@ m365 spfx project externalize [options]
20
20
  : JMESPath query string. See [http://jmespath.org/](http://jmespath.org/) for more information and examples
21
21
 
22
22
  `-o, --output [output]`
23
- : Output type. `json,text,md`. Default `text`
23
+ : Output type. `json,text,csv,md`. Default `json`
24
24
 
25
25
  `--verbose`
26
26
  : Runs command with verbose logging
@@ -23,7 +23,7 @@ m365 spfx project rename [options]
23
23
  : JMESPath query string. See [http://jmespath.org/](http://jmespath.org/) for more information and examples
24
24
 
25
25
  `-o, --output [output]`
26
- : Output type. `json,text,md`. Default `text`
26
+ : Output type. `json,text,csv,md`. Default `json`
27
27
 
28
28
  `--verbose`
29
29
  : Runs command with verbose logging
@@ -20,7 +20,7 @@ m365 spfx doctor [options]
20
20
  : JMESPath query string. See [http://jmespath.org/](http://jmespath.org/) for more information and examples
21
21
 
22
22
  `-o, --output [output]`
23
- : Output type. `json,text,md`. Default `text`
23
+ : Output type. `json,text,csv,md`. Default `json`
24
24
 
25
25
  `--verbose`
26
26
  : Runs command with verbose logging