@salesforce/b2c-cli 0.3.0 → 0.4.0
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/README.md +70 -1
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +14 -1
- package/dist/commands/am/clients/create.d.ts +28 -0
- package/dist/commands/am/clients/create.js +156 -0
- package/dist/commands/am/clients/create.js.map +1 -0
- package/dist/commands/am/clients/delete.d.ts +13 -0
- package/dist/commands/am/clients/delete.js +29 -0
- package/dist/commands/am/clients/delete.js.map +1 -0
- package/dist/commands/am/clients/get.d.ts +26 -0
- package/dist/commands/am/clients/get.js +186 -0
- package/dist/commands/am/clients/get.js.map +1 -0
- package/dist/commands/am/clients/list.d.ts +18 -0
- package/dist/commands/am/clients/list.js +139 -0
- package/dist/commands/am/clients/list.js.map +1 -0
- package/dist/commands/am/clients/password.d.ts +16 -0
- package/dist/commands/am/clients/password.js +51 -0
- package/dist/commands/am/clients/password.js.map +1 -0
- package/dist/commands/am/clients/update.d.ts +34 -0
- package/dist/commands/am/clients/update.js +146 -0
- package/dist/commands/am/clients/update.js.map +1 -0
- package/dist/commands/am/orgs/get.d.ts +23 -0
- package/dist/commands/am/orgs/get.js +175 -0
- package/dist/commands/am/orgs/get.js.map +1 -0
- package/dist/commands/am/orgs/list.d.ts +18 -0
- package/dist/commands/am/orgs/list.js +149 -0
- package/dist/commands/am/orgs/list.js.map +1 -0
- package/dist/commands/am/roles/get.d.ts +15 -0
- package/dist/commands/am/roles/get.js +63 -0
- package/dist/commands/am/roles/get.js.map +1 -0
- package/dist/commands/am/roles/grant.d.ts +18 -0
- package/dist/commands/am/roles/grant.js +66 -0
- package/dist/commands/am/roles/grant.js.map +1 -0
- package/dist/commands/am/roles/list.d.ts +22 -0
- package/dist/commands/am/roles/list.js +142 -0
- package/dist/commands/am/roles/list.js.map +1 -0
- package/dist/commands/am/roles/revoke.d.ts +18 -0
- package/dist/commands/am/roles/revoke.js +66 -0
- package/dist/commands/am/roles/revoke.js.map +1 -0
- package/dist/commands/am/users/create.d.ts +17 -0
- package/dist/commands/am/users/create.js +56 -0
- package/dist/commands/am/users/create.js.map +1 -0
- package/dist/commands/am/users/delete.d.ts +16 -0
- package/dist/commands/am/users/delete.js +63 -0
- package/dist/commands/am/users/delete.js.map +1 -0
- package/dist/commands/am/users/get.d.ts +23 -0
- package/dist/commands/am/users/get.js +161 -0
- package/dist/commands/am/users/get.js.map +1 -0
- package/dist/commands/am/users/list.d.ts +21 -0
- package/dist/commands/am/users/list.js +162 -0
- package/dist/commands/am/users/list.js.map +1 -0
- package/dist/commands/am/users/reset.d.ts +13 -0
- package/dist/commands/am/users/reset.js +43 -0
- package/dist/commands/am/users/reset.js.map +1 -0
- package/dist/commands/am/users/update.d.ts +18 -0
- package/dist/commands/am/users/update.js +63 -0
- package/dist/commands/am/users/update.js.map +1 -0
- package/dist/commands/code/activate.d.ts +1 -0
- package/dist/commands/code/delete.d.ts +1 -0
- package/dist/commands/code/deploy.d.ts +1 -0
- package/dist/commands/code/watch.d.ts +1 -0
- package/dist/commands/content/export.d.ts +57 -0
- package/dist/commands/content/export.js +217 -0
- package/dist/commands/content/export.js.map +1 -0
- package/dist/commands/content/list.d.ts +56 -0
- package/dist/commands/content/list.js +133 -0
- package/dist/commands/content/list.js.map +1 -0
- package/dist/commands/docs/download.d.ts +1 -0
- package/dist/commands/ecdn/cache/purge.d.ts +1 -0
- package/dist/commands/ecdn/certificates/add.d.ts +1 -0
- package/dist/commands/ecdn/certificates/delete.d.ts +1 -0
- package/dist/commands/ecdn/certificates/list.d.ts +1 -0
- package/dist/commands/ecdn/certificates/update.d.ts +1 -0
- package/dist/commands/ecdn/certificates/validate.d.ts +1 -0
- package/dist/commands/ecdn/cipher-suites/get.d.ts +1 -0
- package/dist/commands/ecdn/cipher-suites/update.d.ts +1 -0
- package/dist/commands/ecdn/logpush/jobs/create.d.ts +1 -0
- package/dist/commands/ecdn/logpush/jobs/delete.d.ts +1 -0
- package/dist/commands/ecdn/logpush/jobs/get.d.ts +1 -0
- package/dist/commands/ecdn/logpush/jobs/list.d.ts +1 -0
- package/dist/commands/ecdn/logpush/jobs/update.d.ts +1 -0
- package/dist/commands/ecdn/logpush/ownership.d.ts +1 -0
- package/dist/commands/ecdn/mrt-rules/create.d.ts +1 -0
- package/dist/commands/ecdn/mrt-rules/delete.d.ts +1 -0
- package/dist/commands/ecdn/mrt-rules/get.d.ts +1 -0
- package/dist/commands/ecdn/mrt-rules/rules/delete.d.ts +1 -0
- package/dist/commands/ecdn/mrt-rules/rules/update.d.ts +1 -0
- package/dist/commands/ecdn/mrt-rules/update.d.ts +1 -0
- package/dist/commands/ecdn/mtls/create.d.ts +1 -0
- package/dist/commands/ecdn/mtls/delete.d.ts +1 -0
- package/dist/commands/ecdn/mtls/get.d.ts +1 -0
- package/dist/commands/ecdn/mtls/list.d.ts +1 -0
- package/dist/commands/ecdn/origin-headers/delete.d.ts +1 -0
- package/dist/commands/ecdn/origin-headers/get.d.ts +1 -0
- package/dist/commands/ecdn/origin-headers/set.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/notifications/create.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/notifications/delete.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/notifications/list.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/policies/create.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/policies/delete.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/policies/get.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/policies/list.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/policies/update.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/scripts/get.d.ts +1 -0
- package/dist/commands/ecdn/page-shield/scripts/list.d.ts +1 -0
- package/dist/commands/ecdn/security/get.d.ts +1 -0
- package/dist/commands/ecdn/security/update.d.ts +1 -0
- package/dist/commands/ecdn/speed/get.d.ts +1 -0
- package/dist/commands/ecdn/speed/update.d.ts +1 -0
- package/dist/commands/ecdn/waf/groups/list.d.ts +1 -0
- package/dist/commands/ecdn/waf/groups/update.d.ts +1 -0
- package/dist/commands/ecdn/waf/managed-rules/list.d.ts +1 -0
- package/dist/commands/ecdn/waf/managed-rules/update.d.ts +1 -0
- package/dist/commands/ecdn/waf/migrate.d.ts +1 -0
- package/dist/commands/ecdn/waf/owasp/get.d.ts +1 -0
- package/dist/commands/ecdn/waf/owasp/update.d.ts +1 -0
- package/dist/commands/ecdn/waf/rules/get.d.ts +1 -0
- package/dist/commands/ecdn/waf/rules/list.d.ts +1 -0
- package/dist/commands/ecdn/waf/rules/update.d.ts +1 -0
- package/dist/commands/ecdn/waf/rulesets/list.d.ts +1 -0
- package/dist/commands/ecdn/waf/rulesets/update.d.ts +1 -0
- package/dist/commands/ecdn/zones/create.d.ts +1 -0
- package/dist/commands/ecdn/zones/list.d.ts +1 -0
- package/dist/commands/job/export.d.ts +1 -0
- package/dist/commands/job/import.d.ts +1 -0
- package/dist/commands/job/run.d.ts +1 -0
- package/dist/commands/job/search.d.ts +1 -0
- package/dist/commands/job/wait.d.ts +1 -0
- package/dist/commands/logs/get.d.ts +1 -0
- package/dist/commands/logs/list.d.ts +1 -0
- package/dist/commands/logs/tail.d.ts +1 -0
- package/dist/commands/mrt/bundle/deploy.js +24 -4
- package/dist/commands/mrt/bundle/deploy.js.map +1 -1
- package/dist/commands/mrt/tail-logs.d.ts +27 -0
- package/dist/commands/mrt/tail-logs.js +137 -0
- package/dist/commands/mrt/tail-logs.js.map +1 -0
- package/dist/commands/{ods → sandbox}/create.d.ts +8 -14
- package/dist/commands/{ods → sandbox}/create.js +112 -102
- package/dist/commands/sandbox/create.js.map +1 -0
- package/dist/commands/sandbox/delete.d.ts +19 -0
- package/dist/commands/sandbox/delete.js +141 -0
- package/dist/commands/sandbox/delete.js.map +1 -0
- package/dist/commands/{ods → sandbox}/get.d.ts +2 -1
- package/dist/commands/{ods → sandbox}/get.js +5 -4
- package/dist/commands/sandbox/get.js.map +1 -0
- package/dist/commands/{ods → sandbox}/info.d.ts +2 -1
- package/dist/commands/{ods → sandbox}/info.js +6 -5
- package/dist/commands/sandbox/info.js.map +1 -0
- package/dist/commands/{ods → sandbox}/list.d.ts +2 -1
- package/dist/commands/{ods → sandbox}/list.js +6 -5
- package/dist/commands/sandbox/list.js.map +1 -0
- package/dist/commands/{ods → sandbox}/restart.d.ts +7 -1
- package/dist/commands/sandbox/restart.js +107 -0
- package/dist/commands/sandbox/restart.js.map +1 -0
- package/dist/commands/{ods → sandbox}/start.d.ts +7 -1
- package/dist/commands/sandbox/start.js +108 -0
- package/dist/commands/sandbox/start.js.map +1 -0
- package/dist/commands/{ods → sandbox}/stop.d.ts +7 -1
- package/dist/commands/sandbox/stop.js +107 -0
- package/dist/commands/sandbox/stop.js.map +1 -0
- package/dist/commands/scaffold/generate.d.ts +22 -0
- package/dist/commands/scaffold/generate.js +74 -0
- package/dist/commands/scaffold/generate.js.map +1 -0
- package/dist/commands/scaffold/index.d.ts +24 -0
- package/dist/commands/scaffold/index.js +80 -0
- package/dist/commands/scaffold/index.js.map +1 -0
- package/dist/commands/scaffold/info.d.ts +24 -0
- package/dist/commands/scaffold/info.js +89 -0
- package/dist/commands/scaffold/info.js.map +1 -0
- package/dist/commands/scaffold/init.d.ts +29 -0
- package/dist/commands/scaffold/init.js +221 -0
- package/dist/commands/scaffold/init.js.map +1 -0
- package/dist/commands/scaffold/list.d.ts +38 -0
- package/dist/commands/scaffold/list.js +131 -0
- package/dist/commands/scaffold/list.js.map +1 -0
- package/dist/commands/scaffold/search.d.ts +32 -0
- package/dist/commands/scaffold/search.js +97 -0
- package/dist/commands/scaffold/search.js.map +1 -0
- package/dist/commands/scaffold/validate.d.ts +24 -0
- package/dist/commands/scaffold/validate.js +74 -0
- package/dist/commands/scaffold/validate.js.map +1 -0
- package/dist/commands/scapi/custom/status.d.ts +1 -0
- package/dist/commands/scapi/schemas/get.d.ts +1 -0
- package/dist/commands/scapi/schemas/list.d.ts +1 -0
- package/dist/commands/setup/index.d.ts +12 -0
- package/dist/commands/setup/index.js +34 -0
- package/dist/commands/setup/index.js.map +1 -0
- package/dist/commands/setup/{config.d.ts → inspect.d.ts} +5 -4
- package/dist/commands/setup/{config.js → inspect.js} +5 -3
- package/dist/commands/setup/inspect.js.map +1 -0
- package/dist/commands/setup/instance/create.d.ts +43 -0
- package/dist/commands/setup/instance/create.js +269 -0
- package/dist/commands/setup/instance/create.js.map +1 -0
- package/dist/commands/setup/instance/index.d.ts +9 -0
- package/dist/commands/setup/instance/index.js +22 -0
- package/dist/commands/setup/instance/index.js.map +1 -0
- package/dist/commands/setup/instance/list.d.ts +31 -0
- package/dist/commands/setup/instance/list.js +68 -0
- package/dist/commands/setup/instance/list.js.map +1 -0
- package/dist/commands/setup/instance/remove.d.ts +34 -0
- package/dist/commands/setup/instance/remove.js +75 -0
- package/dist/commands/setup/instance/remove.js.map +1 -0
- package/dist/commands/setup/instance/set-active.d.ts +33 -0
- package/dist/commands/setup/instance/set-active.js +78 -0
- package/dist/commands/setup/instance/set-active.js.map +1 -0
- package/dist/commands/slas/client/create.d.ts +1 -0
- package/dist/commands/slas/client/create.js +1 -0
- package/dist/commands/slas/client/create.js.map +1 -1
- package/dist/commands/slas/client/delete.d.ts +1 -0
- package/dist/commands/slas/client/get.d.ts +1 -0
- package/dist/commands/slas/client/list.d.ts +1 -0
- package/dist/commands/slas/client/list.js +8 -3
- package/dist/commands/slas/client/list.js.map +1 -1
- package/dist/commands/slas/client/update.d.ts +1 -0
- package/dist/commands/webdav/get.d.ts +1 -0
- package/dist/commands/webdav/rm.d.ts +1 -0
- package/dist/i18n/locales/en.d.ts +42 -0
- package/dist/i18n/locales/en.js +42 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/index.d.ts +42 -0
- package/dist/lib/scaffold/generate-helper.d.ts +47 -0
- package/dist/lib/scaffold/generate-helper.js +271 -0
- package/dist/lib/scaffold/generate-helper.js.map +1 -0
- package/dist/lib/scaffold/source-resolver.d.ts +25 -0
- package/dist/lib/scaffold/source-resolver.js +37 -0
- package/dist/lib/scaffold/source-resolver.js.map +1 -0
- package/dist/utils/ecdn/zone-command.d.ts +1 -0
- package/dist/utils/mrt-logs/format.d.ts +28 -0
- package/dist/utils/mrt-logs/format.js +90 -0
- package/dist/utils/mrt-logs/format.js.map +1 -0
- package/dist/utils/mrt-logs/index.d.ts +1 -0
- package/dist/utils/mrt-logs/index.js +7 -0
- package/dist/utils/mrt-logs/index.js.map +1 -0
- package/dist/utils/slas/client.d.ts +7 -0
- package/dist/utils/slas/client.js +26 -13
- package/dist/utils/slas/client.js.map +1 -1
- package/oclif.manifest.json +13503 -4591
- package/package.json +61 -19
- package/dist/commands/ods/create.js.map +0 -1
- package/dist/commands/ods/delete.d.ts +0 -15
- package/dist/commands/ods/delete.js +0 -86
- package/dist/commands/ods/delete.js.map +0 -1
- package/dist/commands/ods/get.js.map +0 -1
- package/dist/commands/ods/info.js.map +0 -1
- package/dist/commands/ods/list.js.map +0 -1
- package/dist/commands/ods/restart.js +0 -51
- package/dist/commands/ods/restart.js.map +0 -1
- package/dist/commands/ods/start.js +0 -51
- package/dist/commands/ods/start.js.map +0 -1
- package/dist/commands/ods/stop.js +0 -51
- package/dist/commands/ods/stop.js.map +0 -1
- package/dist/commands/setup/config.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
import type { OrganizationCollection } from '@salesforce/b2c-tooling-sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Command to list Account Manager organizations.
|
|
5
|
+
*/
|
|
6
|
+
export default class OrgList extends AmCommand<typeof OrgList> {
|
|
7
|
+
static description: string;
|
|
8
|
+
static enableJsonFlag: boolean;
|
|
9
|
+
static examples: string[];
|
|
10
|
+
static flags: {
|
|
11
|
+
size: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
page: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
columns: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
extended: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<OrganizationCollection>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Flags, Errors } from '@oclif/core';
|
|
7
|
+
import { AmCommand, TableRenderer } from '@salesforce/b2c-tooling-sdk/cli';
|
|
8
|
+
import { t } from '../../../i18n/index.js';
|
|
9
|
+
const COLUMNS = {
|
|
10
|
+
id: {
|
|
11
|
+
header: 'ID',
|
|
12
|
+
get: (o) => o.id || '-',
|
|
13
|
+
},
|
|
14
|
+
name: {
|
|
15
|
+
header: 'Name',
|
|
16
|
+
get: (o) => o.name || '-',
|
|
17
|
+
},
|
|
18
|
+
realms: {
|
|
19
|
+
header: 'Realms',
|
|
20
|
+
get: (o) => (o.realms && o.realms.length > 0 ? o.realms.length.toString() : '0'),
|
|
21
|
+
},
|
|
22
|
+
emailsDomains: {
|
|
23
|
+
header: 'Email Domains',
|
|
24
|
+
get(o) {
|
|
25
|
+
const domains = o.emailsDomains;
|
|
26
|
+
return domains && domains.length > 0 ? domains.length.toString() : '0';
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
twoFARoles: {
|
|
30
|
+
header: '2FA Roles',
|
|
31
|
+
get: (o) => (o.twoFARoles && o.twoFARoles.length > 0 ? o.twoFARoles.length.toString() : '0'),
|
|
32
|
+
},
|
|
33
|
+
twoFAEnabled: {
|
|
34
|
+
header: '2FA Enabled',
|
|
35
|
+
get: (o) => (o.twoFAEnabled ? 'Yes' : 'No'),
|
|
36
|
+
},
|
|
37
|
+
allowedVerifierTypes: {
|
|
38
|
+
header: 'Verifier Types',
|
|
39
|
+
get: (o) => o.allowedVerifierTypes && o.allowedVerifierTypes.length > 0 ? o.allowedVerifierTypes.length.toString() : '0',
|
|
40
|
+
},
|
|
41
|
+
vaasEnabled: {
|
|
42
|
+
header: 'VaaS Enabled',
|
|
43
|
+
get: (o) => (o.vaasEnabled ? 'Yes' : 'No'),
|
|
44
|
+
},
|
|
45
|
+
sfIdentityFederation: {
|
|
46
|
+
header: 'SF Identity',
|
|
47
|
+
get: (o) => (o.sfIdentityFederation ? 'Yes' : 'No'),
|
|
48
|
+
},
|
|
49
|
+
passwordMinEntropy: {
|
|
50
|
+
header: 'Min Password Length',
|
|
51
|
+
get(o) {
|
|
52
|
+
const minEntropy = o.passwordMinEntropy;
|
|
53
|
+
return minEntropy === undefined ? '-' : minEntropy.toString();
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
const DEFAULT_COLUMNS = [
|
|
58
|
+
'id',
|
|
59
|
+
'name',
|
|
60
|
+
'realms',
|
|
61
|
+
'emailsDomains',
|
|
62
|
+
'twoFAEnabled',
|
|
63
|
+
'vaasEnabled',
|
|
64
|
+
'sfIdentityFederation',
|
|
65
|
+
'passwordMinEntropy',
|
|
66
|
+
];
|
|
67
|
+
const tableRenderer = new TableRenderer(COLUMNS);
|
|
68
|
+
/**
|
|
69
|
+
* Command to list Account Manager organizations.
|
|
70
|
+
*/
|
|
71
|
+
export default class OrgList extends AmCommand {
|
|
72
|
+
static description = t('commands.org.list.description', 'List Account Manager organizations');
|
|
73
|
+
static enableJsonFlag = true;
|
|
74
|
+
static examples = [
|
|
75
|
+
'<%= config.bin %> <%= command.id %>',
|
|
76
|
+
'<%= config.bin %> <%= command.id %> --size 50',
|
|
77
|
+
'<%= config.bin %> <%= command.id %> --all',
|
|
78
|
+
'<%= config.bin %> <%= command.id %> --extended',
|
|
79
|
+
'<%= config.bin %> <%= command.id %> --json',
|
|
80
|
+
];
|
|
81
|
+
static flags = {
|
|
82
|
+
size: Flags.integer({
|
|
83
|
+
char: 's',
|
|
84
|
+
description: 'Page size (default: 25, min: 1, max: 5000)',
|
|
85
|
+
}),
|
|
86
|
+
page: Flags.integer({
|
|
87
|
+
description: 'Page number (zero-based index, default: 0, min: 0)',
|
|
88
|
+
}),
|
|
89
|
+
all: Flags.boolean({
|
|
90
|
+
char: 'a',
|
|
91
|
+
description: 'Return all organizations (uses max page size of 5000)',
|
|
92
|
+
}),
|
|
93
|
+
columns: Flags.string({
|
|
94
|
+
description: 'Comma-separated list of columns to display',
|
|
95
|
+
}),
|
|
96
|
+
extended: Flags.boolean({
|
|
97
|
+
char: 'x',
|
|
98
|
+
description: 'Show extended columns',
|
|
99
|
+
}),
|
|
100
|
+
};
|
|
101
|
+
async run() {
|
|
102
|
+
const { size = 25, page = 0, all = false } = this.flags;
|
|
103
|
+
// Validate size
|
|
104
|
+
if (size !== undefined) {
|
|
105
|
+
if (size < 1) {
|
|
106
|
+
throw new Errors.CLIError(t('commands.org.list.errors.sizeMin', 'Size must be at least 1'));
|
|
107
|
+
}
|
|
108
|
+
if (size > 5000) {
|
|
109
|
+
throw new Errors.CLIError(t('commands.org.list.errors.sizeMax', 'Size cannot exceed 5000'));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Validate page
|
|
113
|
+
if (page !== undefined && page < 0) {
|
|
114
|
+
throw new Errors.CLIError(t('commands.org.list.errors.pageMin', 'Page must be a non-negative integer'));
|
|
115
|
+
}
|
|
116
|
+
this.log(t('commands.org.list.fetching', 'Fetching organizations...'));
|
|
117
|
+
const result = await this.accountManagerClient.listOrgs({
|
|
118
|
+
size,
|
|
119
|
+
page,
|
|
120
|
+
all,
|
|
121
|
+
});
|
|
122
|
+
if (this.jsonEnabled()) {
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
if (!result.content || result.content.length === 0) {
|
|
126
|
+
this.log(t('commands.org.list.noResults', 'No organizations found'));
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
// Determine columns to display
|
|
130
|
+
let columnsToShow = DEFAULT_COLUMNS;
|
|
131
|
+
if (this.flags.columns) {
|
|
132
|
+
columnsToShow = this.flags.columns.split(',').map((c) => c.trim());
|
|
133
|
+
}
|
|
134
|
+
else if (this.flags.extended) {
|
|
135
|
+
columnsToShow = Object.keys(COLUMNS);
|
|
136
|
+
}
|
|
137
|
+
tableRenderer.render(result.content, columnsToShow);
|
|
138
|
+
// Show pagination hint if more pages available
|
|
139
|
+
const totalPages = result.totalPages ?? 0;
|
|
140
|
+
const currentPage = result.number ?? 0;
|
|
141
|
+
if (totalPages > 1 && currentPage < totalPages - 1) {
|
|
142
|
+
this.log(t('commands.org.list.morePages', 'More organizations available. Use --page {{page}} to view the next page.', {
|
|
143
|
+
page: currentPage + 1,
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/am/orgs/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
import type { AccountManagerRole } from '@salesforce/b2c-tooling-sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Command to get details of a single Account Manager role.
|
|
5
|
+
*/
|
|
6
|
+
export default class RoleGet extends AmCommand<typeof RoleGet> {
|
|
7
|
+
static args: {
|
|
8
|
+
roleId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
static description: string;
|
|
11
|
+
static enableJsonFlag: boolean;
|
|
12
|
+
static examples: string[];
|
|
13
|
+
run(): Promise<AccountManagerRole>;
|
|
14
|
+
private printRoleDetails;
|
|
15
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Args, ux } from '@oclif/core';
|
|
7
|
+
import cliui from 'cliui';
|
|
8
|
+
import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
9
|
+
import { t } from '../../../i18n/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Command to get details of a single Account Manager role.
|
|
12
|
+
*/
|
|
13
|
+
export default class RoleGet extends AmCommand {
|
|
14
|
+
static args = {
|
|
15
|
+
roleId: Args.string({
|
|
16
|
+
description: 'Role ID',
|
|
17
|
+
required: true,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
static description = t('commands.role.get.description', 'Get details of an Account Manager role');
|
|
21
|
+
static enableJsonFlag = true;
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> <%= command.id %> bm-admin',
|
|
24
|
+
'<%= config.bin %> <%= command.id %> bm-user --json',
|
|
25
|
+
];
|
|
26
|
+
async run() {
|
|
27
|
+
const { roleId } = this.args;
|
|
28
|
+
this.log(t('commands.role.get.fetching', 'Fetching role {{roleId}}...', { roleId }));
|
|
29
|
+
const role = await this.accountManagerClient.getRole(roleId);
|
|
30
|
+
if (this.jsonEnabled()) {
|
|
31
|
+
return role;
|
|
32
|
+
}
|
|
33
|
+
this.printRoleDetails(role);
|
|
34
|
+
return role;
|
|
35
|
+
}
|
|
36
|
+
printRoleDetails(role) {
|
|
37
|
+
const ui = cliui({ width: process.stdout.columns || 80 });
|
|
38
|
+
ui.div({ text: 'Role Details', padding: [1, 0, 0, 0] });
|
|
39
|
+
ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
|
|
40
|
+
const fields = [
|
|
41
|
+
['ID', role.id],
|
|
42
|
+
['Description', role.description],
|
|
43
|
+
['Role Enum Name', role.roleEnumName],
|
|
44
|
+
['Scope', role.scope],
|
|
45
|
+
['Target Type', role.targetType || undefined],
|
|
46
|
+
['2FA Enabled', role.twoFAEnabled?.toString()],
|
|
47
|
+
['Internal Role', role.internalRole?.toString()],
|
|
48
|
+
];
|
|
49
|
+
for (const [label, value] of fields) {
|
|
50
|
+
if (value !== undefined) {
|
|
51
|
+
ui.div({ text: `${label}:`, width: 25, padding: [0, 2, 0, 0] }, { text: value, padding: [0, 0, 0, 0] });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Permissions
|
|
55
|
+
if (role.permissions && role.permissions.length > 0) {
|
|
56
|
+
ui.div({ text: 'Permissions', padding: [2, 0, 0, 0] });
|
|
57
|
+
ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
|
|
58
|
+
ui.div({ text: 'Permissions:', width: 25, padding: [0, 2, 0, 0] }, { text: role.permissions.join(', '), padding: [0, 0, 0, 0] });
|
|
59
|
+
}
|
|
60
|
+
ux.stdout(ui.toString());
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/am/roles/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
import type { AccountManagerUser } from '@salesforce/b2c-tooling-sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Command to grant a role to an Account Manager user.
|
|
5
|
+
*/
|
|
6
|
+
export default class RoleGrant extends AmCommand<typeof RoleGrant> {
|
|
7
|
+
static args: {
|
|
8
|
+
login: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
static description: string;
|
|
11
|
+
static enableJsonFlag: boolean;
|
|
12
|
+
static examples: string[];
|
|
13
|
+
static flags: {
|
|
14
|
+
role: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
scope: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<AccountManagerUser>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Args, Flags } from '@oclif/core';
|
|
7
|
+
import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
8
|
+
import { t } from '../../../i18n/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Command to grant a role to an Account Manager user.
|
|
11
|
+
*/
|
|
12
|
+
export default class RoleGrant extends AmCommand {
|
|
13
|
+
static args = {
|
|
14
|
+
login: Args.string({
|
|
15
|
+
description: 'User login (email)',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
static description = t('commands.role.grant.description', 'Grant a role to an Account Manager user');
|
|
20
|
+
static enableJsonFlag = true;
|
|
21
|
+
static examples = [
|
|
22
|
+
'<%= config.bin %> <%= command.id %> user@example.com --role bm-admin',
|
|
23
|
+
'<%= config.bin %> <%= command.id %> user@example.com --role bm-admin --scope tenant1,tenant2',
|
|
24
|
+
];
|
|
25
|
+
static flags = {
|
|
26
|
+
role: Flags.string({
|
|
27
|
+
char: 'r',
|
|
28
|
+
description: 'Role to grant',
|
|
29
|
+
required: true,
|
|
30
|
+
}),
|
|
31
|
+
scope: Flags.string({
|
|
32
|
+
char: 's',
|
|
33
|
+
description: 'Scope for the role (tenant IDs, comma-separated)',
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
async run() {
|
|
37
|
+
const { login } = this.args;
|
|
38
|
+
const { role, scope } = this.flags;
|
|
39
|
+
this.log(t('commands.role.grant.fetching', 'Fetching user {{login}}...', { login }));
|
|
40
|
+
const user = await this.accountManagerClient.findUserByLogin(login);
|
|
41
|
+
if (!user) {
|
|
42
|
+
this.error(t('commands.role.grant.notFound', 'User {{login}} not found', { login }));
|
|
43
|
+
}
|
|
44
|
+
if (!user.id) {
|
|
45
|
+
this.error(t('commands.role.grant.noId', 'User does not have an ID'));
|
|
46
|
+
}
|
|
47
|
+
this.log(t('commands.role.grant.granting', 'Granting role {{role}} to user {{login}}...', {
|
|
48
|
+
role,
|
|
49
|
+
login,
|
|
50
|
+
}));
|
|
51
|
+
const updatedUser = await this.accountManagerClient.grantRole(user.id, role, scope);
|
|
52
|
+
if (this.jsonEnabled()) {
|
|
53
|
+
return updatedUser;
|
|
54
|
+
}
|
|
55
|
+
const message = scope
|
|
56
|
+
? t('commands.role.grant.successWithScope', 'User {{login}} granted role {{role}} with scope {{scope}}.', {
|
|
57
|
+
login,
|
|
58
|
+
role,
|
|
59
|
+
scope,
|
|
60
|
+
})
|
|
61
|
+
: t('commands.role.grant.success', 'User {{login}} granted role {{role}}.', { login, role });
|
|
62
|
+
this.log(message);
|
|
63
|
+
return updatedUser;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=grant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grant.js","sourceRoot":"","sources":["../../../../src/commands/am/roles/grant.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,SAAS,EAAC,MAAM,iCAAiC,CAAC;AAE1D,OAAO,EAAC,CAAC,EAAC,MAAM,wBAAwB,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,SAA2B;IAChE,MAAM,CAAC,IAAI,GAAG;QACZ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,iCAAiC,EAAE,yCAAyC,CAAC,CAAC;IAErG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,sEAAsE;QACtE,8FAA8F;KAC/F,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kDAAkD;SAChE,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,8BAA8B,EAAE,4BAA4B,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEpE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B,EAAE,0BAA0B,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,8BAA8B,EAAE,6CAA6C,EAAE;YAC/E,IAAI;YACJ,KAAK;SACN,CAAC,CACH,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAEpF,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,CAAC,CAAC,sCAAsC,EAAE,4DAA4D,EAAE;gBACtG,KAAK;gBACL,IAAI;gBACJ,KAAK;aACN,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC,6BAA6B,EAAE,uCAAuC,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;QAE7F,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElB,OAAO,WAAW,CAAC;IACrB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
import type { RoleCollection } from '@salesforce/b2c-tooling-sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Command to list Account Manager roles.
|
|
5
|
+
*/
|
|
6
|
+
export default class RoleList extends AmCommand<typeof RoleList> {
|
|
7
|
+
static description: string;
|
|
8
|
+
static enableJsonFlag: boolean;
|
|
9
|
+
static examples: string[];
|
|
10
|
+
static flags: {
|
|
11
|
+
size: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
page: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'target-type': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
columns: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
extended: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<RoleCollection>;
|
|
18
|
+
/**
|
|
19
|
+
* Determines which columns to display based on flags.
|
|
20
|
+
*/
|
|
21
|
+
private getSelectedColumns;
|
|
22
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Flags, Errors } from '@oclif/core';
|
|
7
|
+
import { AmCommand, TableRenderer } from '@salesforce/b2c-tooling-sdk/cli';
|
|
8
|
+
import { t } from '../../../i18n/index.js';
|
|
9
|
+
const COLUMNS = {
|
|
10
|
+
id: {
|
|
11
|
+
header: 'ID',
|
|
12
|
+
get: (r) => r.id || '-',
|
|
13
|
+
},
|
|
14
|
+
description: {
|
|
15
|
+
header: 'Description',
|
|
16
|
+
get: (r) => r.description || '-',
|
|
17
|
+
},
|
|
18
|
+
roleEnumName: {
|
|
19
|
+
header: 'Role Enum Name',
|
|
20
|
+
get: (r) => r.roleEnumName || '-',
|
|
21
|
+
},
|
|
22
|
+
scope: {
|
|
23
|
+
header: 'Scope',
|
|
24
|
+
get: (r) => r.scope || '-',
|
|
25
|
+
},
|
|
26
|
+
targetType: {
|
|
27
|
+
header: 'Target Type',
|
|
28
|
+
get: (r) => r.targetType || '-',
|
|
29
|
+
},
|
|
30
|
+
twoFAEnabled: {
|
|
31
|
+
header: '2FA Enabled',
|
|
32
|
+
get: (r) => (r.twoFAEnabled ? 'Yes' : 'No'),
|
|
33
|
+
},
|
|
34
|
+
permissions: {
|
|
35
|
+
header: 'Permissions',
|
|
36
|
+
get(r) {
|
|
37
|
+
if (!r.permissions || r.permissions.length === 0)
|
|
38
|
+
return '-';
|
|
39
|
+
return r.permissions.join(', ');
|
|
40
|
+
},
|
|
41
|
+
extended: true,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
const DEFAULT_COLUMNS = ['id', 'description', 'roleEnumName'];
|
|
45
|
+
const tableRenderer = new TableRenderer(COLUMNS);
|
|
46
|
+
/**
|
|
47
|
+
* Command to list Account Manager roles.
|
|
48
|
+
*/
|
|
49
|
+
export default class RoleList extends AmCommand {
|
|
50
|
+
static description = t('commands.role.list.description', 'List Account Manager roles');
|
|
51
|
+
static enableJsonFlag = true;
|
|
52
|
+
static examples = [
|
|
53
|
+
'<%= config.bin %> <%= command.id %>',
|
|
54
|
+
'<%= config.bin %> <%= command.id %> --size 50',
|
|
55
|
+
'<%= config.bin %> <%= command.id %> --target-type User',
|
|
56
|
+
'<%= config.bin %> <%= command.id %> --extended',
|
|
57
|
+
'<%= config.bin %> <%= command.id %> --json',
|
|
58
|
+
];
|
|
59
|
+
static flags = {
|
|
60
|
+
size: Flags.integer({
|
|
61
|
+
char: 's',
|
|
62
|
+
description: 'Page size (default: 20, min: 1, max: 4000)',
|
|
63
|
+
}),
|
|
64
|
+
page: Flags.integer({
|
|
65
|
+
description: 'Page number (zero-based index, default: 0, min: 0)',
|
|
66
|
+
}),
|
|
67
|
+
'target-type': Flags.string({
|
|
68
|
+
char: 't',
|
|
69
|
+
description: 'Filter by target type (User or ApiClient)',
|
|
70
|
+
options: ['User', 'ApiClient'],
|
|
71
|
+
}),
|
|
72
|
+
columns: Flags.string({
|
|
73
|
+
char: 'c',
|
|
74
|
+
description: `Columns to display (comma-separated). Available: ${Object.keys(COLUMNS).join(', ')}`,
|
|
75
|
+
}),
|
|
76
|
+
extended: Flags.boolean({
|
|
77
|
+
char: 'x',
|
|
78
|
+
description: 'Show all columns including extended fields',
|
|
79
|
+
default: false,
|
|
80
|
+
}),
|
|
81
|
+
};
|
|
82
|
+
async run() {
|
|
83
|
+
const { size, page, 'target-type': targetType } = this.flags;
|
|
84
|
+
// Ensure size and page are numbers (oclif might return undefined or string)
|
|
85
|
+
const pageSize = size === undefined ? 20 : Number(size);
|
|
86
|
+
const pageNumber = page === undefined ? 0 : Number(page);
|
|
87
|
+
// Validate size parameter
|
|
88
|
+
if (pageSize < 1 || pageSize > 4000) {
|
|
89
|
+
throw new Errors.CLIError(t('commands.role.list.invalidSize', 'Page size must be between 1 and 4000 (inclusive). Received: {{size}}', {
|
|
90
|
+
size: pageSize,
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
// Validate page parameter (must be zero-based index, non-negative)
|
|
94
|
+
if (pageNumber < 0 || !Number.isFinite(pageNumber)) {
|
|
95
|
+
throw new Errors.CLIError(t('commands.role.list.invalidPage', 'Page number must be a non-negative integer (zero-based index). Received: {{page}}', { page: pageNumber }));
|
|
96
|
+
}
|
|
97
|
+
this.log(t('commands.role.list.fetching', 'Fetching roles...'));
|
|
98
|
+
const result = await this.accountManagerClient.listRoles({
|
|
99
|
+
size: pageSize,
|
|
100
|
+
page: pageNumber,
|
|
101
|
+
roleTargetType: targetType,
|
|
102
|
+
});
|
|
103
|
+
if (this.jsonEnabled()) {
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
const roles = result.content || [];
|
|
107
|
+
if (roles.length === 0) {
|
|
108
|
+
this.log(t('commands.role.list.noRoles', 'No roles found.'));
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
tableRenderer.render(roles, this.getSelectedColumns());
|
|
112
|
+
// Check if there are more pages (if we got a full page of results, there might be more)
|
|
113
|
+
if (roles.length === pageSize) {
|
|
114
|
+
const nextPage = pageNumber + 1;
|
|
115
|
+
this.log(t('commands.role.list.moreRoles', 'More roles available. Use --page {{nextPage}} to view the next page.', {
|
|
116
|
+
nextPage,
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Determines which columns to display based on flags.
|
|
123
|
+
*/
|
|
124
|
+
getSelectedColumns() {
|
|
125
|
+
const columnsFlag = this.flags.columns;
|
|
126
|
+
const extended = this.flags.extended;
|
|
127
|
+
if (columnsFlag) {
|
|
128
|
+
const requested = columnsFlag.split(',').map((c) => c.trim());
|
|
129
|
+
const valid = tableRenderer.validateColumnKeys(requested);
|
|
130
|
+
if (valid.length === 0) {
|
|
131
|
+
this.warn(`No valid columns specified. Available: ${tableRenderer.getColumnKeys().join(', ')}`);
|
|
132
|
+
return DEFAULT_COLUMNS;
|
|
133
|
+
}
|
|
134
|
+
return valid;
|
|
135
|
+
}
|
|
136
|
+
if (extended) {
|
|
137
|
+
return tableRenderer.getColumnKeys();
|
|
138
|
+
}
|
|
139
|
+
return DEFAULT_COLUMNS;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/am/roles/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
import type { AccountManagerUser } from '@salesforce/b2c-tooling-sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Command to revoke a role from an Account Manager user.
|
|
5
|
+
*/
|
|
6
|
+
export default class RoleRevoke extends AmCommand<typeof RoleRevoke> {
|
|
7
|
+
static args: {
|
|
8
|
+
login: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
static description: string;
|
|
11
|
+
static enableJsonFlag: boolean;
|
|
12
|
+
static examples: string[];
|
|
13
|
+
static flags: {
|
|
14
|
+
role: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
scope: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<AccountManagerUser>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Args, Flags } from '@oclif/core';
|
|
7
|
+
import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
8
|
+
import { t } from '../../../i18n/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Command to revoke a role from an Account Manager user.
|
|
11
|
+
*/
|
|
12
|
+
export default class RoleRevoke extends AmCommand {
|
|
13
|
+
static args = {
|
|
14
|
+
login: Args.string({
|
|
15
|
+
description: 'User login (email)',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
static description = t('commands.role.revoke.description', 'Revoke a role from an Account Manager user');
|
|
20
|
+
static enableJsonFlag = true;
|
|
21
|
+
static examples = [
|
|
22
|
+
'<%= config.bin %> <%= command.id %> user@example.com --role bm-admin',
|
|
23
|
+
'<%= config.bin %> <%= command.id %> user@example.com --role bm-admin --scope tenant1',
|
|
24
|
+
];
|
|
25
|
+
static flags = {
|
|
26
|
+
role: Flags.string({
|
|
27
|
+
char: 'r',
|
|
28
|
+
description: 'Role to revoke',
|
|
29
|
+
required: true,
|
|
30
|
+
}),
|
|
31
|
+
scope: Flags.string({
|
|
32
|
+
char: 's',
|
|
33
|
+
description: 'Scope to remove (if not provided, removes entire role)',
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
async run() {
|
|
37
|
+
const { login } = this.args;
|
|
38
|
+
const { role, scope } = this.flags;
|
|
39
|
+
this.log(t('commands.role.revoke.fetching', 'Fetching user {{login}}...', { login }));
|
|
40
|
+
const user = await this.accountManagerClient.findUserByLogin(login);
|
|
41
|
+
if (!user) {
|
|
42
|
+
this.error(t('commands.role.revoke.notFound', 'User {{login}} not found', { login }));
|
|
43
|
+
}
|
|
44
|
+
if (!user.id) {
|
|
45
|
+
this.error(t('commands.role.revoke.noId', 'User does not have an ID'));
|
|
46
|
+
}
|
|
47
|
+
this.log(t('commands.role.revoke.revoking', 'Revoking role {{role}} from user {{login}}...', {
|
|
48
|
+
role,
|
|
49
|
+
login,
|
|
50
|
+
}));
|
|
51
|
+
const updatedUser = await this.accountManagerClient.revokeRole(user.id, role, scope);
|
|
52
|
+
if (this.jsonEnabled()) {
|
|
53
|
+
return updatedUser;
|
|
54
|
+
}
|
|
55
|
+
const message = scope
|
|
56
|
+
? t('commands.role.revoke.successWithScope', 'User {{login}} revoked role {{role}} with scope {{scope}}.', {
|
|
57
|
+
login,
|
|
58
|
+
role,
|
|
59
|
+
scope,
|
|
60
|
+
})
|
|
61
|
+
: t('commands.role.revoke.success', 'User {{login}} revoked role {{role}}.', { login, role });
|
|
62
|
+
this.log(message);
|
|
63
|
+
return updatedUser;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=revoke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revoke.js","sourceRoot":"","sources":["../../../../src/commands/am/roles/revoke.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,SAAS,EAAC,MAAM,iCAAiC,CAAC;AAE1D,OAAO,EAAC,CAAC,EAAC,MAAM,wBAAwB,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAA4B;IAClE,MAAM,CAAC,IAAI,GAAG;QACZ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,kCAAkC,EAAE,4CAA4C,CAAC,CAAC;IAEzG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,sEAAsE;QACtE,sFAAsF;KACvF,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,gBAAgB;YAC7B,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,wDAAwD;SACtE,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,+BAA+B,EAAE,4BAA4B,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;QAEpF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEpE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,+BAA+B,EAAE,0BAA0B,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B,EAAE,0BAA0B,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,+BAA+B,EAAE,+CAA+C,EAAE;YAClF,IAAI;YACJ,KAAK;SACN,CAAC,CACH,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAErF,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,CAAC,CAAC,uCAAuC,EAAE,4DAA4D,EAAE;gBACvG,KAAK;gBACL,IAAI;gBACJ,KAAK;aACN,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC,8BAA8B,EAAE,uCAAuC,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;QAE9F,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElB,OAAO,WAAW,CAAC;IACrB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
|
|
2
|
+
import type { AccountManagerUser } from '@salesforce/b2c-tooling-sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Command to create a new Account Manager user.
|
|
5
|
+
*/
|
|
6
|
+
export default class UserCreate extends AmCommand<typeof UserCreate> {
|
|
7
|
+
static description: string;
|
|
8
|
+
static enableJsonFlag: boolean;
|
|
9
|
+
static examples: string[];
|
|
10
|
+
static flags: {
|
|
11
|
+
org: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
mail: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'first-name': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
'last-name': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<AccountManagerUser>;
|
|
17
|
+
}
|