@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.
Files changed (252) hide show
  1. package/README.md +70 -1
  2. package/bin/dev.cmd +3 -0
  3. package/bin/dev.js +14 -1
  4. package/dist/commands/am/clients/create.d.ts +28 -0
  5. package/dist/commands/am/clients/create.js +156 -0
  6. package/dist/commands/am/clients/create.js.map +1 -0
  7. package/dist/commands/am/clients/delete.d.ts +13 -0
  8. package/dist/commands/am/clients/delete.js +29 -0
  9. package/dist/commands/am/clients/delete.js.map +1 -0
  10. package/dist/commands/am/clients/get.d.ts +26 -0
  11. package/dist/commands/am/clients/get.js +186 -0
  12. package/dist/commands/am/clients/get.js.map +1 -0
  13. package/dist/commands/am/clients/list.d.ts +18 -0
  14. package/dist/commands/am/clients/list.js +139 -0
  15. package/dist/commands/am/clients/list.js.map +1 -0
  16. package/dist/commands/am/clients/password.d.ts +16 -0
  17. package/dist/commands/am/clients/password.js +51 -0
  18. package/dist/commands/am/clients/password.js.map +1 -0
  19. package/dist/commands/am/clients/update.d.ts +34 -0
  20. package/dist/commands/am/clients/update.js +146 -0
  21. package/dist/commands/am/clients/update.js.map +1 -0
  22. package/dist/commands/am/orgs/get.d.ts +23 -0
  23. package/dist/commands/am/orgs/get.js +175 -0
  24. package/dist/commands/am/orgs/get.js.map +1 -0
  25. package/dist/commands/am/orgs/list.d.ts +18 -0
  26. package/dist/commands/am/orgs/list.js +149 -0
  27. package/dist/commands/am/orgs/list.js.map +1 -0
  28. package/dist/commands/am/roles/get.d.ts +15 -0
  29. package/dist/commands/am/roles/get.js +63 -0
  30. package/dist/commands/am/roles/get.js.map +1 -0
  31. package/dist/commands/am/roles/grant.d.ts +18 -0
  32. package/dist/commands/am/roles/grant.js +66 -0
  33. package/dist/commands/am/roles/grant.js.map +1 -0
  34. package/dist/commands/am/roles/list.d.ts +22 -0
  35. package/dist/commands/am/roles/list.js +142 -0
  36. package/dist/commands/am/roles/list.js.map +1 -0
  37. package/dist/commands/am/roles/revoke.d.ts +18 -0
  38. package/dist/commands/am/roles/revoke.js +66 -0
  39. package/dist/commands/am/roles/revoke.js.map +1 -0
  40. package/dist/commands/am/users/create.d.ts +17 -0
  41. package/dist/commands/am/users/create.js +56 -0
  42. package/dist/commands/am/users/create.js.map +1 -0
  43. package/dist/commands/am/users/delete.d.ts +16 -0
  44. package/dist/commands/am/users/delete.js +63 -0
  45. package/dist/commands/am/users/delete.js.map +1 -0
  46. package/dist/commands/am/users/get.d.ts +23 -0
  47. package/dist/commands/am/users/get.js +161 -0
  48. package/dist/commands/am/users/get.js.map +1 -0
  49. package/dist/commands/am/users/list.d.ts +21 -0
  50. package/dist/commands/am/users/list.js +162 -0
  51. package/dist/commands/am/users/list.js.map +1 -0
  52. package/dist/commands/am/users/reset.d.ts +13 -0
  53. package/dist/commands/am/users/reset.js +43 -0
  54. package/dist/commands/am/users/reset.js.map +1 -0
  55. package/dist/commands/am/users/update.d.ts +18 -0
  56. package/dist/commands/am/users/update.js +63 -0
  57. package/dist/commands/am/users/update.js.map +1 -0
  58. package/dist/commands/code/activate.d.ts +1 -0
  59. package/dist/commands/code/delete.d.ts +1 -0
  60. package/dist/commands/code/deploy.d.ts +1 -0
  61. package/dist/commands/code/watch.d.ts +1 -0
  62. package/dist/commands/content/export.d.ts +57 -0
  63. package/dist/commands/content/export.js +217 -0
  64. package/dist/commands/content/export.js.map +1 -0
  65. package/dist/commands/content/list.d.ts +56 -0
  66. package/dist/commands/content/list.js +133 -0
  67. package/dist/commands/content/list.js.map +1 -0
  68. package/dist/commands/docs/download.d.ts +1 -0
  69. package/dist/commands/ecdn/cache/purge.d.ts +1 -0
  70. package/dist/commands/ecdn/certificates/add.d.ts +1 -0
  71. package/dist/commands/ecdn/certificates/delete.d.ts +1 -0
  72. package/dist/commands/ecdn/certificates/list.d.ts +1 -0
  73. package/dist/commands/ecdn/certificates/update.d.ts +1 -0
  74. package/dist/commands/ecdn/certificates/validate.d.ts +1 -0
  75. package/dist/commands/ecdn/cipher-suites/get.d.ts +1 -0
  76. package/dist/commands/ecdn/cipher-suites/update.d.ts +1 -0
  77. package/dist/commands/ecdn/logpush/jobs/create.d.ts +1 -0
  78. package/dist/commands/ecdn/logpush/jobs/delete.d.ts +1 -0
  79. package/dist/commands/ecdn/logpush/jobs/get.d.ts +1 -0
  80. package/dist/commands/ecdn/logpush/jobs/list.d.ts +1 -0
  81. package/dist/commands/ecdn/logpush/jobs/update.d.ts +1 -0
  82. package/dist/commands/ecdn/logpush/ownership.d.ts +1 -0
  83. package/dist/commands/ecdn/mrt-rules/create.d.ts +1 -0
  84. package/dist/commands/ecdn/mrt-rules/delete.d.ts +1 -0
  85. package/dist/commands/ecdn/mrt-rules/get.d.ts +1 -0
  86. package/dist/commands/ecdn/mrt-rules/rules/delete.d.ts +1 -0
  87. package/dist/commands/ecdn/mrt-rules/rules/update.d.ts +1 -0
  88. package/dist/commands/ecdn/mrt-rules/update.d.ts +1 -0
  89. package/dist/commands/ecdn/mtls/create.d.ts +1 -0
  90. package/dist/commands/ecdn/mtls/delete.d.ts +1 -0
  91. package/dist/commands/ecdn/mtls/get.d.ts +1 -0
  92. package/dist/commands/ecdn/mtls/list.d.ts +1 -0
  93. package/dist/commands/ecdn/origin-headers/delete.d.ts +1 -0
  94. package/dist/commands/ecdn/origin-headers/get.d.ts +1 -0
  95. package/dist/commands/ecdn/origin-headers/set.d.ts +1 -0
  96. package/dist/commands/ecdn/page-shield/notifications/create.d.ts +1 -0
  97. package/dist/commands/ecdn/page-shield/notifications/delete.d.ts +1 -0
  98. package/dist/commands/ecdn/page-shield/notifications/list.d.ts +1 -0
  99. package/dist/commands/ecdn/page-shield/policies/create.d.ts +1 -0
  100. package/dist/commands/ecdn/page-shield/policies/delete.d.ts +1 -0
  101. package/dist/commands/ecdn/page-shield/policies/get.d.ts +1 -0
  102. package/dist/commands/ecdn/page-shield/policies/list.d.ts +1 -0
  103. package/dist/commands/ecdn/page-shield/policies/update.d.ts +1 -0
  104. package/dist/commands/ecdn/page-shield/scripts/get.d.ts +1 -0
  105. package/dist/commands/ecdn/page-shield/scripts/list.d.ts +1 -0
  106. package/dist/commands/ecdn/security/get.d.ts +1 -0
  107. package/dist/commands/ecdn/security/update.d.ts +1 -0
  108. package/dist/commands/ecdn/speed/get.d.ts +1 -0
  109. package/dist/commands/ecdn/speed/update.d.ts +1 -0
  110. package/dist/commands/ecdn/waf/groups/list.d.ts +1 -0
  111. package/dist/commands/ecdn/waf/groups/update.d.ts +1 -0
  112. package/dist/commands/ecdn/waf/managed-rules/list.d.ts +1 -0
  113. package/dist/commands/ecdn/waf/managed-rules/update.d.ts +1 -0
  114. package/dist/commands/ecdn/waf/migrate.d.ts +1 -0
  115. package/dist/commands/ecdn/waf/owasp/get.d.ts +1 -0
  116. package/dist/commands/ecdn/waf/owasp/update.d.ts +1 -0
  117. package/dist/commands/ecdn/waf/rules/get.d.ts +1 -0
  118. package/dist/commands/ecdn/waf/rules/list.d.ts +1 -0
  119. package/dist/commands/ecdn/waf/rules/update.d.ts +1 -0
  120. package/dist/commands/ecdn/waf/rulesets/list.d.ts +1 -0
  121. package/dist/commands/ecdn/waf/rulesets/update.d.ts +1 -0
  122. package/dist/commands/ecdn/zones/create.d.ts +1 -0
  123. package/dist/commands/ecdn/zones/list.d.ts +1 -0
  124. package/dist/commands/job/export.d.ts +1 -0
  125. package/dist/commands/job/import.d.ts +1 -0
  126. package/dist/commands/job/run.d.ts +1 -0
  127. package/dist/commands/job/search.d.ts +1 -0
  128. package/dist/commands/job/wait.d.ts +1 -0
  129. package/dist/commands/logs/get.d.ts +1 -0
  130. package/dist/commands/logs/list.d.ts +1 -0
  131. package/dist/commands/logs/tail.d.ts +1 -0
  132. package/dist/commands/mrt/bundle/deploy.js +24 -4
  133. package/dist/commands/mrt/bundle/deploy.js.map +1 -1
  134. package/dist/commands/mrt/tail-logs.d.ts +27 -0
  135. package/dist/commands/mrt/tail-logs.js +137 -0
  136. package/dist/commands/mrt/tail-logs.js.map +1 -0
  137. package/dist/commands/{ods → sandbox}/create.d.ts +8 -14
  138. package/dist/commands/{ods → sandbox}/create.js +112 -102
  139. package/dist/commands/sandbox/create.js.map +1 -0
  140. package/dist/commands/sandbox/delete.d.ts +19 -0
  141. package/dist/commands/sandbox/delete.js +141 -0
  142. package/dist/commands/sandbox/delete.js.map +1 -0
  143. package/dist/commands/{ods → sandbox}/get.d.ts +2 -1
  144. package/dist/commands/{ods → sandbox}/get.js +5 -4
  145. package/dist/commands/sandbox/get.js.map +1 -0
  146. package/dist/commands/{ods → sandbox}/info.d.ts +2 -1
  147. package/dist/commands/{ods → sandbox}/info.js +6 -5
  148. package/dist/commands/sandbox/info.js.map +1 -0
  149. package/dist/commands/{ods → sandbox}/list.d.ts +2 -1
  150. package/dist/commands/{ods → sandbox}/list.js +6 -5
  151. package/dist/commands/sandbox/list.js.map +1 -0
  152. package/dist/commands/{ods → sandbox}/restart.d.ts +7 -1
  153. package/dist/commands/sandbox/restart.js +107 -0
  154. package/dist/commands/sandbox/restart.js.map +1 -0
  155. package/dist/commands/{ods → sandbox}/start.d.ts +7 -1
  156. package/dist/commands/sandbox/start.js +108 -0
  157. package/dist/commands/sandbox/start.js.map +1 -0
  158. package/dist/commands/{ods → sandbox}/stop.d.ts +7 -1
  159. package/dist/commands/sandbox/stop.js +107 -0
  160. package/dist/commands/sandbox/stop.js.map +1 -0
  161. package/dist/commands/scaffold/generate.d.ts +22 -0
  162. package/dist/commands/scaffold/generate.js +74 -0
  163. package/dist/commands/scaffold/generate.js.map +1 -0
  164. package/dist/commands/scaffold/index.d.ts +24 -0
  165. package/dist/commands/scaffold/index.js +80 -0
  166. package/dist/commands/scaffold/index.js.map +1 -0
  167. package/dist/commands/scaffold/info.d.ts +24 -0
  168. package/dist/commands/scaffold/info.js +89 -0
  169. package/dist/commands/scaffold/info.js.map +1 -0
  170. package/dist/commands/scaffold/init.d.ts +29 -0
  171. package/dist/commands/scaffold/init.js +221 -0
  172. package/dist/commands/scaffold/init.js.map +1 -0
  173. package/dist/commands/scaffold/list.d.ts +38 -0
  174. package/dist/commands/scaffold/list.js +131 -0
  175. package/dist/commands/scaffold/list.js.map +1 -0
  176. package/dist/commands/scaffold/search.d.ts +32 -0
  177. package/dist/commands/scaffold/search.js +97 -0
  178. package/dist/commands/scaffold/search.js.map +1 -0
  179. package/dist/commands/scaffold/validate.d.ts +24 -0
  180. package/dist/commands/scaffold/validate.js +74 -0
  181. package/dist/commands/scaffold/validate.js.map +1 -0
  182. package/dist/commands/scapi/custom/status.d.ts +1 -0
  183. package/dist/commands/scapi/schemas/get.d.ts +1 -0
  184. package/dist/commands/scapi/schemas/list.d.ts +1 -0
  185. package/dist/commands/setup/index.d.ts +12 -0
  186. package/dist/commands/setup/index.js +34 -0
  187. package/dist/commands/setup/index.js.map +1 -0
  188. package/dist/commands/setup/{config.d.ts → inspect.d.ts} +5 -4
  189. package/dist/commands/setup/{config.js → inspect.js} +5 -3
  190. package/dist/commands/setup/inspect.js.map +1 -0
  191. package/dist/commands/setup/instance/create.d.ts +43 -0
  192. package/dist/commands/setup/instance/create.js +269 -0
  193. package/dist/commands/setup/instance/create.js.map +1 -0
  194. package/dist/commands/setup/instance/index.d.ts +9 -0
  195. package/dist/commands/setup/instance/index.js +22 -0
  196. package/dist/commands/setup/instance/index.js.map +1 -0
  197. package/dist/commands/setup/instance/list.d.ts +31 -0
  198. package/dist/commands/setup/instance/list.js +68 -0
  199. package/dist/commands/setup/instance/list.js.map +1 -0
  200. package/dist/commands/setup/instance/remove.d.ts +34 -0
  201. package/dist/commands/setup/instance/remove.js +75 -0
  202. package/dist/commands/setup/instance/remove.js.map +1 -0
  203. package/dist/commands/setup/instance/set-active.d.ts +33 -0
  204. package/dist/commands/setup/instance/set-active.js +78 -0
  205. package/dist/commands/setup/instance/set-active.js.map +1 -0
  206. package/dist/commands/slas/client/create.d.ts +1 -0
  207. package/dist/commands/slas/client/create.js +1 -0
  208. package/dist/commands/slas/client/create.js.map +1 -1
  209. package/dist/commands/slas/client/delete.d.ts +1 -0
  210. package/dist/commands/slas/client/get.d.ts +1 -0
  211. package/dist/commands/slas/client/list.d.ts +1 -0
  212. package/dist/commands/slas/client/list.js +8 -3
  213. package/dist/commands/slas/client/list.js.map +1 -1
  214. package/dist/commands/slas/client/update.d.ts +1 -0
  215. package/dist/commands/webdav/get.d.ts +1 -0
  216. package/dist/commands/webdav/rm.d.ts +1 -0
  217. package/dist/i18n/locales/en.d.ts +42 -0
  218. package/dist/i18n/locales/en.js +42 -0
  219. package/dist/i18n/locales/en.js.map +1 -1
  220. package/dist/i18n/locales/index.d.ts +42 -0
  221. package/dist/lib/scaffold/generate-helper.d.ts +47 -0
  222. package/dist/lib/scaffold/generate-helper.js +271 -0
  223. package/dist/lib/scaffold/generate-helper.js.map +1 -0
  224. package/dist/lib/scaffold/source-resolver.d.ts +25 -0
  225. package/dist/lib/scaffold/source-resolver.js +37 -0
  226. package/dist/lib/scaffold/source-resolver.js.map +1 -0
  227. package/dist/utils/ecdn/zone-command.d.ts +1 -0
  228. package/dist/utils/mrt-logs/format.d.ts +28 -0
  229. package/dist/utils/mrt-logs/format.js +90 -0
  230. package/dist/utils/mrt-logs/format.js.map +1 -0
  231. package/dist/utils/mrt-logs/index.d.ts +1 -0
  232. package/dist/utils/mrt-logs/index.js +7 -0
  233. package/dist/utils/mrt-logs/index.js.map +1 -0
  234. package/dist/utils/slas/client.d.ts +7 -0
  235. package/dist/utils/slas/client.js +26 -13
  236. package/dist/utils/slas/client.js.map +1 -1
  237. package/oclif.manifest.json +13503 -4591
  238. package/package.json +61 -19
  239. package/dist/commands/ods/create.js.map +0 -1
  240. package/dist/commands/ods/delete.d.ts +0 -15
  241. package/dist/commands/ods/delete.js +0 -86
  242. package/dist/commands/ods/delete.js.map +0 -1
  243. package/dist/commands/ods/get.js.map +0 -1
  244. package/dist/commands/ods/info.js.map +0 -1
  245. package/dist/commands/ods/list.js.map +0 -1
  246. package/dist/commands/ods/restart.js +0 -51
  247. package/dist/commands/ods/restart.js.map +0 -1
  248. package/dist/commands/ods/start.js +0 -51
  249. package/dist/commands/ods/start.js.map +0 -1
  250. package/dist/commands/ods/stop.js +0 -51
  251. package/dist/commands/ods/stop.js.map +0 -1
  252. package/dist/commands/setup/config.js.map +0 -1
@@ -0,0 +1,56 @@
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 } from '@oclif/core';
7
+ import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { t } from '../../../i18n/index.js';
9
+ /**
10
+ * Command to create a new Account Manager user.
11
+ */
12
+ export default class UserCreate extends AmCommand {
13
+ static description = t('commands.user.create.description', 'Create a new Account Manager user');
14
+ static enableJsonFlag = true;
15
+ static examples = [
16
+ '<%= config.bin %> <%= command.id %> --org org-id --mail user@example.com --first-name John --last-name Doe',
17
+ '<%= config.bin %> <%= command.id %> --org org-id --mail user@example.com --first-name John --last-name Doe --json',
18
+ ];
19
+ static flags = {
20
+ org: Flags.string({
21
+ char: 'o',
22
+ description: 'Organization ID to create the user in',
23
+ required: true,
24
+ }),
25
+ mail: Flags.string({
26
+ char: 'm',
27
+ description: 'User email (login)',
28
+ required: true,
29
+ }),
30
+ 'first-name': Flags.string({
31
+ description: 'First name',
32
+ required: true,
33
+ }),
34
+ 'last-name': Flags.string({
35
+ description: 'Last name',
36
+ required: true,
37
+ }),
38
+ };
39
+ async run() {
40
+ const { org, mail, 'first-name': firstName, 'last-name': lastName } = this.flags;
41
+ this.log(t('commands.user.create.creating', 'Creating user {{mail}} in organization {{org}}...', { mail, org }));
42
+ const user = await this.accountManagerClient.createUser({
43
+ mail,
44
+ firstName,
45
+ lastName,
46
+ organizations: [org],
47
+ primaryOrganization: org,
48
+ });
49
+ if (this.jsonEnabled()) {
50
+ return user;
51
+ }
52
+ this.log(t('commands.user.create.success', 'User {{mail}} created successfully in organization {{org}}.', { mail, org }));
53
+ return user;
54
+ }
55
+ }
56
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/am/users/create.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,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,WAAW,GAAG,CAAC,CAAC,kCAAkC,EAAE,mCAAmC,CAAC,CAAC;IAEhG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,4GAA4G;QAC5G,mHAAmH;KACpH,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAE/E,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,+BAA+B,EAAE,mDAAmD,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;QAE/G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;YACtD,IAAI;YACJ,SAAS;YACT,QAAQ;YACR,aAAa,EAAE,CAAC,GAAG,CAAC;YACpB,mBAAmB,EAAE,GAAG;SACzB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,8BAA8B,EAAE,6DAA6D,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC,CAC9G,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ /**
3
+ * Command to delete an Account Manager user.
4
+ */
5
+ export default class UserDelete extends AmCommand<typeof UserDelete> {
6
+ static args: {
7
+ login: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static description: string;
10
+ static enableJsonFlag: boolean;
11
+ static examples: string[];
12
+ static flags: {
13
+ purge: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -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, Flags } from '@oclif/core';
7
+ import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { t } from '../../../i18n/index.js';
9
+ /**
10
+ * Command to delete an Account Manager user.
11
+ */
12
+ export default class UserDelete extends AmCommand {
13
+ static args = {
14
+ login: Args.string({
15
+ description: 'User login (email)',
16
+ required: true,
17
+ }),
18
+ };
19
+ static description = t('commands.user.delete.description', 'Delete an Account Manager user');
20
+ static enableJsonFlag = true;
21
+ static examples = [
22
+ '<%= config.bin %> <%= command.id %> user@example.com',
23
+ '<%= config.bin %> <%= command.id %> user@example.com --purge',
24
+ ];
25
+ static flags = {
26
+ purge: Flags.boolean({
27
+ description: 'Purge the user completely (hard delete). User must be in DELETED state first.',
28
+ default: false,
29
+ }),
30
+ };
31
+ async run() {
32
+ const { login } = this.args;
33
+ const { purge } = this.flags;
34
+ this.log(t('commands.user.delete.fetching', 'Fetching user {{login}}...', { login }));
35
+ const user = await this.accountManagerClient.findUserByLogin(login);
36
+ if (!user) {
37
+ this.error(t('commands.user.delete.notFound', 'User {{login}} not found', { login }));
38
+ }
39
+ if (!user.id) {
40
+ this.error(t('commands.user.delete.noId', 'User does not have an ID'));
41
+ }
42
+ if (purge) {
43
+ this.log(t('commands.user.delete.purging', 'Purging user {{login}}...', {
44
+ login,
45
+ }));
46
+ await this.accountManagerClient.purgeUser(user.id);
47
+ }
48
+ else {
49
+ this.log(t('commands.user.delete.deleting', 'Deleting user {{login}}...', {
50
+ login,
51
+ }));
52
+ await this.accountManagerClient.deleteUser(user.id);
53
+ }
54
+ if (this.jsonEnabled()) {
55
+ return;
56
+ }
57
+ this.log(t('commands.user.delete.success', 'User {{login}} {{action}} successfully.', {
58
+ login,
59
+ action: purge ? 'purged' : 'deleted',
60
+ }));
61
+ }
62
+ }
63
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/commands/am/users/delete.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,SAAS,EAAC,MAAM,iCAAiC,CAAC;AAC1D,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,gCAAgC,CAAC,CAAC;IAE7F,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,sDAAsD;QACtD,8DAA8D;KAC/D,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,WAAW,EAAE,+EAA+E;YAC5F,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3B,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,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,8BAA8B,EAAE,2BAA2B,EAAE;gBAC7D,KAAK;aACN,CAAC,CACH,CAAC;YACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,+BAA+B,EAAE,4BAA4B,EAAE;gBAC/D,KAAK;aACN,CAAC,CACH,CAAC;YACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,8BAA8B,EAAE,yCAAyC,EAAE;YAC3E,KAAK;YACL,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SACrC,CAAC,CACH,CAAC;IACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import type { AccountManagerUser } from '@salesforce/b2c-tooling-sdk';
3
+ /**
4
+ * Command to get details of a single Account Manager user.
5
+ */
6
+ export default class UserGet extends AmCommand<typeof UserGet> {
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
+ expand: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ 'expand-all': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<AccountManagerUser>;
18
+ private printBasicFields;
19
+ private printOrganizations;
20
+ private printRoles;
21
+ private printRoleTenantFilters;
22
+ private printUserDetails;
23
+ }
@@ -0,0 +1,161 @@
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, 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
+ * Valid expand values for the users API.
12
+ * Extracted from the generated API types to ensure consistency.
13
+ */
14
+ const VALID_EXPAND_VALUES = ['organizations', 'roles'];
15
+ /**
16
+ * Command to get details of a single Account Manager user.
17
+ */
18
+ export default class UserGet extends AmCommand {
19
+ static args = {
20
+ login: Args.string({
21
+ description: 'User login (email)',
22
+ required: true,
23
+ }),
24
+ };
25
+ static description = t('commands.user.get.description', 'Get details of an Account Manager user');
26
+ static enableJsonFlag = true;
27
+ static examples = [
28
+ '<%= config.bin %> <%= command.id %> user@example.com',
29
+ '<%= config.bin %> <%= command.id %> user@example.com --json',
30
+ '<%= config.bin %> <%= command.id %> user@example.com --expand-all',
31
+ '<%= config.bin %> <%= command.id %> user@example.com --expand organizations',
32
+ '<%= config.bin %> <%= command.id %> user@example.com --expand organizations,roles',
33
+ ];
34
+ static flags = {
35
+ expand: Flags.string({
36
+ description: t('flags.expand.description', 'Comma-separated list of fields to expand. Valid values: organizations, roles'),
37
+ multiple: false,
38
+ }),
39
+ 'expand-all': Flags.boolean({
40
+ description: t('flags.expandAll.description', 'Expand both organizations and roles'),
41
+ default: false,
42
+ }),
43
+ };
44
+ async run() {
45
+ const { login } = this.args;
46
+ const { expand: expandRaw, 'expand-all': expandAll } = this.flags;
47
+ // Validate and process expand flags
48
+ let expand;
49
+ if (expandAll) {
50
+ // --expand-all expands both
51
+ expand = ['organizations', 'roles'];
52
+ }
53
+ else if (expandRaw) {
54
+ // Parse comma-separated values
55
+ const expandValues = expandRaw
56
+ .split(',')
57
+ .map((v) => v.trim())
58
+ .filter(Boolean);
59
+ // Validate each value
60
+ const invalidValues = [];
61
+ const validValues = [];
62
+ for (const value of expandValues) {
63
+ if (VALID_EXPAND_VALUES.includes(value)) {
64
+ validValues.push(value);
65
+ }
66
+ else {
67
+ invalidValues.push(value);
68
+ }
69
+ }
70
+ if (invalidValues.length > 0) {
71
+ this.error(t('commands.user.get.invalidExpand', 'Invalid expand value(s): {{invalid}}. Valid values are: {{valid}}', {
72
+ invalid: invalidValues.join(', '),
73
+ valid: VALID_EXPAND_VALUES.join(', '),
74
+ }));
75
+ }
76
+ if (validValues.length > 0) {
77
+ expand = validValues;
78
+ }
79
+ }
80
+ this.log(t('commands.user.get.fetching', 'Fetching user {{login}}...', { login }));
81
+ const user = await this.accountManagerClient.findUserByLogin(login, expand);
82
+ if (!user) {
83
+ this.error(t('commands.user.get.notFound', 'User {{login}} not found', { login }));
84
+ }
85
+ if (this.jsonEnabled()) {
86
+ return user;
87
+ }
88
+ this.printUserDetails(user);
89
+ return user;
90
+ }
91
+ printBasicFields(ui, user) {
92
+ const isPasswordExpired = user.passwordExpirationTimestamp
93
+ ? user.passwordExpirationTimestamp < Date.now()
94
+ : undefined;
95
+ const twoFAEnabled = user.verifiers && user.verifiers.length > 0 ? 'Yes' : 'No';
96
+ const fields = [
97
+ ['ID', user.id],
98
+ ['Email', user.mail],
99
+ ['First Name', user.firstName],
100
+ ['Last Name', user.lastName],
101
+ ['Display Name', user.displayName],
102
+ ['State', user.userState],
103
+ ['Primary Organization', user.primaryOrganization],
104
+ ['Preferred Locale', user.preferredLocale || undefined],
105
+ ['Business Phone', user.businessPhone || undefined],
106
+ ['Home Phone', user.homePhone || undefined],
107
+ ['Mobile Phone', user.mobilePhone || undefined],
108
+ ['Linked to SF Identity', user.linkedToSfIdentity?.toString()],
109
+ ['2FA Enabled', twoFAEnabled],
110
+ ['Password Expired', isPasswordExpired === undefined ? undefined : isPasswordExpired ? 'Yes' : 'No'],
111
+ ['Last Login', user.lastLoginDate || undefined],
112
+ ['Created At', user.createdAt ? new Date(user.createdAt).toLocaleString() : undefined],
113
+ ['Last Modified', user.lastModified ? new Date(user.lastModified).toLocaleString() : undefined],
114
+ ];
115
+ for (const [label, value] of fields) {
116
+ if (value !== undefined) {
117
+ ui.div({ text: `${label}:`, width: 25, padding: [0, 2, 0, 0] }, { text: value, padding: [0, 0, 0, 0] });
118
+ }
119
+ }
120
+ }
121
+ printOrganizations(ui, user) {
122
+ if (user.organizations === undefined || user.organizations.length === 0) {
123
+ return;
124
+ }
125
+ ui.div({ text: 'Organizations', padding: [2, 0, 0, 0] });
126
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
127
+ const orgIds = user.organizations.map((o) => (typeof o === 'string' ? o : o.id || 'Unknown'));
128
+ ui.div({ text: 'Organization IDs:', width: 25, padding: [0, 2, 0, 0] }, { text: orgIds.join(', '), padding: [0, 0, 0, 0] });
129
+ }
130
+ printRoles(ui, user) {
131
+ if (user.roles === undefined || user.roles.length === 0) {
132
+ return;
133
+ }
134
+ ui.div({ text: 'Roles', padding: [2, 0, 0, 0] });
135
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
136
+ const roleNames = user.roles.map((r) => (typeof r === 'string' ? r : r.roleEnumName || r.id || 'Unknown'));
137
+ ui.div({ text: 'Role IDs:', width: 25, padding: [0, 2, 0, 0] }, { text: roleNames.join(', '), padding: [0, 0, 0, 0] });
138
+ }
139
+ printRoleTenantFilters(ui, user) {
140
+ if (user.roleTenantFilterMap === undefined || Object.keys(user.roleTenantFilterMap).length === 0) {
141
+ return;
142
+ }
143
+ ui.div({ text: 'Role Tenant Filters', padding: [2, 0, 0, 0] });
144
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
145
+ for (const [roleId, filter] of Object.entries(user.roleTenantFilterMap)) {
146
+ const filterValue = typeof filter === 'string' ? filter : JSON.stringify(filter);
147
+ ui.div({ text: `${roleId}:`, width: 30, padding: [0, 2, 0, 0] }, { text: filterValue, padding: [0, 0, 0, 0] });
148
+ }
149
+ }
150
+ printUserDetails(user) {
151
+ const ui = cliui({ width: process.stdout.columns || 80 });
152
+ ui.div({ text: 'User Details', padding: [1, 0, 0, 0] });
153
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
154
+ this.printBasicFields(ui, user);
155
+ this.printOrganizations(ui, user);
156
+ this.printRoles(ui, user);
157
+ this.printRoleTenantFilters(ui, user);
158
+ ux.stdout(ui.toString());
159
+ }
160
+ }
161
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/am/users/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import type { UserCollection } from '@salesforce/b2c-tooling-sdk';
3
+ /**
4
+ * Command to list Account Manager users.
5
+ */
6
+ export default class UserList extends AmCommand<typeof UserList> {
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
+ columns: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ extended: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ };
16
+ run(): Promise<UserCollection>;
17
+ /**
18
+ * Determines which columns to display based on flags.
19
+ */
20
+ private getSelectedColumns;
21
+ }
@@ -0,0 +1,162 @@
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
+ mail: {
11
+ header: 'Email',
12
+ get: (u) => u.mail || '-',
13
+ },
14
+ firstName: {
15
+ header: 'First Name',
16
+ get: (u) => u.firstName || '-',
17
+ },
18
+ lastName: {
19
+ header: 'Last Name',
20
+ get: (u) => u.lastName || '-',
21
+ },
22
+ userState: {
23
+ header: 'State',
24
+ get: (u) => u.userState || '-',
25
+ },
26
+ passwordExpired: {
27
+ header: 'Password Expired',
28
+ get: (u) => (u.passwordExpirationTimestamp ? 'Yes' : 'No'),
29
+ },
30
+ twoFAEnabled: {
31
+ header: '2FA Enabled',
32
+ get: (u) => (u.verifiers && u.verifiers.length > 0 ? 'Yes' : 'No'),
33
+ },
34
+ linkedToSfIdentity: {
35
+ header: 'Linked to SF',
36
+ get: (u) => (u.linkedToSfIdentity ? 'Yes' : 'No'),
37
+ },
38
+ lastLoginDate: {
39
+ header: 'Last Login',
40
+ get: (u) => u.lastLoginDate || '-',
41
+ },
42
+ roles: {
43
+ header: 'Roles',
44
+ get(u) {
45
+ if (!u.roles || u.roles.length === 0)
46
+ return '-';
47
+ return u.roles.map((r) => (typeof r === 'string' ? r : r.roleEnumName || '')).join(', ');
48
+ },
49
+ extended: true,
50
+ },
51
+ organizations: {
52
+ header: 'Organizations',
53
+ get(u) {
54
+ if (!u.organizations || u.organizations.length === 0)
55
+ return '-';
56
+ return u.organizations.map((o) => (typeof o === 'string' ? o : o.id || '')).join(', ');
57
+ },
58
+ extended: true,
59
+ },
60
+ };
61
+ const DEFAULT_COLUMNS = [
62
+ 'mail',
63
+ 'firstName',
64
+ 'lastName',
65
+ 'userState',
66
+ 'passwordExpired',
67
+ 'twoFAEnabled',
68
+ 'linkedToSfIdentity',
69
+ 'lastLoginDate',
70
+ ];
71
+ const tableRenderer = new TableRenderer(COLUMNS);
72
+ /**
73
+ * Command to list Account Manager users.
74
+ */
75
+ export default class UserList extends AmCommand {
76
+ static description = t('commands.user.list.description', 'List Account Manager users');
77
+ static enableJsonFlag = true;
78
+ static examples = [
79
+ '<%= config.bin %> <%= command.id %>',
80
+ '<%= config.bin %> <%= command.id %> --size 50',
81
+ '<%= config.bin %> <%= command.id %> --size 100',
82
+ '<%= config.bin %> <%= command.id %> --extended',
83
+ '<%= config.bin %> <%= command.id %> --json',
84
+ ];
85
+ static flags = {
86
+ size: Flags.integer({
87
+ char: 's',
88
+ description: 'Page size (default: 20, min: 1, max: 4000)',
89
+ }),
90
+ page: Flags.integer({
91
+ description: 'Page number (zero-based index, default: 0, min: 0)',
92
+ }),
93
+ columns: Flags.string({
94
+ char: 'c',
95
+ description: `Columns to display (comma-separated). Available: ${Object.keys(COLUMNS).join(', ')}`,
96
+ }),
97
+ extended: Flags.boolean({
98
+ char: 'x',
99
+ description: 'Show all columns including extended fields',
100
+ default: false,
101
+ }),
102
+ };
103
+ async run() {
104
+ const { size, page } = this.flags;
105
+ // Ensure size and page are numbers (oclif might return undefined or string)
106
+ const pageSize = size === undefined ? 20 : Number(size);
107
+ const pageNumber = page === undefined ? 0 : Number(page);
108
+ // Validate size parameter
109
+ if (pageSize < 1 || pageSize > 4000) {
110
+ throw new Errors.CLIError(t('commands.user.list.invalidSize', 'Page size must be between 1 and 4000 (inclusive). Received: {{size}}', {
111
+ size: pageSize,
112
+ }));
113
+ }
114
+ // Validate page parameter (must be zero-based index, non-negative)
115
+ if (pageNumber < 0 || !Number.isFinite(pageNumber)) {
116
+ throw new Errors.CLIError(t('commands.user.list.invalidPage', 'Page number must be a non-negative integer (zero-based index). Received: {{page}}', { page: pageNumber }));
117
+ }
118
+ this.log(t('commands.user.list.fetching', 'Fetching users...'));
119
+ const result = await this.accountManagerClient.listUsers({
120
+ size: pageSize,
121
+ page: pageNumber,
122
+ });
123
+ if (this.jsonEnabled()) {
124
+ return result;
125
+ }
126
+ const users = result.content || [];
127
+ if (users.length === 0) {
128
+ this.log(t('commands.user.list.noUsers', 'No users found.'));
129
+ return result;
130
+ }
131
+ tableRenderer.render(users, this.getSelectedColumns());
132
+ // Check if there are more pages (if we got a full page of results, there might be more)
133
+ if (users.length === pageSize) {
134
+ const nextPage = pageNumber + 1;
135
+ this.log(t('commands.user.list.moreUsers', 'More users available. Use --page {{nextPage}} to view the next page.', {
136
+ nextPage,
137
+ }));
138
+ }
139
+ return result;
140
+ }
141
+ /**
142
+ * Determines which columns to display based on flags.
143
+ */
144
+ getSelectedColumns() {
145
+ const columnsFlag = this.flags.columns;
146
+ const extended = this.flags.extended;
147
+ if (columnsFlag) {
148
+ const requested = columnsFlag.split(',').map((c) => c.trim());
149
+ const valid = tableRenderer.validateColumnKeys(requested);
150
+ if (valid.length === 0) {
151
+ this.warn(`No valid columns specified. Available: ${tableRenderer.getColumnKeys().join(', ')}`);
152
+ return DEFAULT_COLUMNS;
153
+ }
154
+ return valid;
155
+ }
156
+ if (extended) {
157
+ return tableRenderer.getColumnKeys();
158
+ }
159
+ return DEFAULT_COLUMNS;
160
+ }
161
+ }
162
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/am/users/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ /**
3
+ * Command to reset an Account Manager user password.
4
+ */
5
+ export default class UserReset extends AmCommand<typeof UserReset> {
6
+ static args: {
7
+ login: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static description: string;
10
+ static enableJsonFlag: boolean;
11
+ static examples: string[];
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,43 @@
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 } from '@oclif/core';
7
+ import { AmCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { t } from '../../../i18n/index.js';
9
+ /**
10
+ * Command to reset an Account Manager user password.
11
+ */
12
+ export default class UserReset extends AmCommand {
13
+ static args = {
14
+ login: Args.string({
15
+ description: 'User login (email)',
16
+ required: true,
17
+ }),
18
+ };
19
+ static description = t('commands.user.reset.description', 'Reset an Account Manager user password');
20
+ static enableJsonFlag = true;
21
+ static examples = [
22
+ '<%= config.bin %> <%= command.id %> user@example.com',
23
+ '<%= config.bin %> <%= command.id %> user@example.com --json',
24
+ ];
25
+ async run() {
26
+ const { login } = this.args;
27
+ this.log(t('commands.user.reset.fetching', 'Fetching user {{login}}...', { login }));
28
+ const user = await this.accountManagerClient.findUserByLogin(login);
29
+ if (!user) {
30
+ this.error(t('commands.user.reset.notFound', 'User {{login}} not found', { login }));
31
+ }
32
+ if (!user.id) {
33
+ this.error(t('commands.user.reset.noId', 'User does not have an ID'));
34
+ }
35
+ this.log(t('commands.user.reset.resetting', 'Resetting password for user {{login}}...', { login }));
36
+ await this.accountManagerClient.resetUser(user.id);
37
+ if (this.jsonEnabled()) {
38
+ return;
39
+ }
40
+ this.log(t('commands.user.reset.success', 'Password reset for user {{login}} completed successfully.', { login }));
41
+ }
42
+ }
43
+ //# sourceMappingURL=reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/commands/am/users/reset.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,iCAAiC,CAAC;AAC1D,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,wCAAwC,CAAC,CAAC;IAEpG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,sDAAsD;QACtD,6DAA6D;KAC9D,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1B,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,CAAC,CAAC,CAAC,+BAA+B,EAAE,0CAA0C,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;QAElG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,6BAA6B,EAAE,2DAA2D,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;IACnH,CAAC"}
@@ -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 update an Account Manager user.
5
+ */
6
+ export default class UserUpdate extends AmCommand<typeof UserUpdate> {
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
+ 'first-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ 'last-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ };
17
+ run(): Promise<AccountManagerUser>;
18
+ }