@affinidi/cli 2.7.0 → 2.8.1
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 +2 -2
- package/bin/dev.cmd +1 -1
- package/bin/dev.js +5 -0
- package/bin/run.js +5 -0
- package/dist/commands/generate/app.d.ts +7 -7
- package/dist/commands/generate/app.js +72 -75
- package/dist/commands/generate/app.js.map +1 -1
- package/dist/commands/iam/add-principal.d.ts +3 -3
- package/dist/commands/iam/add-principal.js +27 -31
- package/dist/commands/iam/add-principal.js.map +1 -1
- package/dist/commands/iam/get-policies.d.ts +4 -4
- package/dist/commands/iam/get-policies.js +27 -31
- package/dist/commands/iam/get-policies.js.map +1 -1
- package/dist/commands/iam/list-principals.d.ts +2 -2
- package/dist/commands/iam/list-principals.js +9 -14
- package/dist/commands/iam/list-principals.js.map +1 -1
- package/dist/commands/iam/remove-principal.d.ts +4 -3
- package/dist/commands/iam/remove-principal.js +27 -31
- package/dist/commands/iam/remove-principal.js.map +1 -1
- package/dist/commands/iam/update-policies.d.ts +5 -5
- package/dist/commands/iam/update-policies.js +44 -48
- package/dist/commands/iam/update-policies.js.map +1 -1
- package/dist/commands/login/add-user-to-group.d.ts +4 -4
- package/dist/commands/login/add-user-to-group.js +16 -21
- package/dist/commands/login/add-user-to-group.js.map +1 -1
- package/dist/commands/login/create-config.d.ts +11 -10
- package/dist/commands/login/create-config.js +46 -50
- package/dist/commands/login/create-config.js.map +1 -1
- package/dist/commands/login/create-group.d.ts +3 -3
- package/dist/commands/login/create-group.js +15 -20
- package/dist/commands/login/create-group.js.map +1 -1
- package/dist/commands/login/delete-config.d.ts +2 -2
- package/dist/commands/login/delete-config.js +14 -19
- package/dist/commands/login/delete-config.js.map +1 -1
- package/dist/commands/login/delete-group.d.ts +2 -2
- package/dist/commands/login/delete-group.js +14 -19
- package/dist/commands/login/delete-group.js.map +1 -1
- package/dist/commands/login/export-configs.d.ts +3 -3
- package/dist/commands/login/export-configs.js +21 -27
- package/dist/commands/login/export-configs.js.map +1 -1
- package/dist/commands/login/export-groups.d.ts +3 -3
- package/dist/commands/login/export-groups.js +21 -27
- package/dist/commands/login/export-groups.js.map +1 -1
- package/dist/commands/login/get-config.d.ts +3 -3
- package/dist/commands/login/get-config.js +14 -19
- package/dist/commands/login/get-config.js.map +1 -1
- package/dist/commands/login/get-group.d.ts +3 -3
- package/dist/commands/login/get-group.js +14 -19
- package/dist/commands/login/get-group.js.map +1 -1
- package/dist/commands/login/import-configs.d.ts +3 -3
- package/dist/commands/login/import-configs.js +33 -37
- package/dist/commands/login/import-configs.js.map +1 -1
- package/dist/commands/login/import-groups.d.ts +3 -3
- package/dist/commands/login/import-groups.js +21 -26
- package/dist/commands/login/import-groups.js.map +1 -1
- package/dist/commands/login/list-configs.d.ts +2 -2
- package/dist/commands/login/list-configs.js +7 -11
- package/dist/commands/login/list-configs.js.map +1 -1
- package/dist/commands/login/list-groups.d.ts +2 -2
- package/dist/commands/login/list-groups.js +7 -11
- package/dist/commands/login/list-groups.js.map +1 -1
- package/dist/commands/login/list-users-in-group.d.ts +5 -5
- package/dist/commands/login/list-users-in-group.js +24 -29
- package/dist/commands/login/list-users-in-group.js.map +1 -1
- package/dist/commands/login/remove-user-from-group.d.ts +3 -3
- package/dist/commands/login/remove-user-from-group.js +16 -21
- package/dist/commands/login/remove-user-from-group.js.map +1 -1
- package/dist/commands/login/update-config.d.ts +10 -10
- package/dist/commands/login/update-config.js +40 -45
- package/dist/commands/login/update-config.js.map +1 -1
- package/dist/commands/project/create-project.d.ts +4 -4
- package/dist/commands/project/create-project.js +16 -21
- package/dist/commands/project/create-project.js.map +1 -1
- package/dist/commands/project/get-active-project.d.ts +2 -2
- package/dist/commands/project/get-active-project.js +7 -11
- package/dist/commands/project/get-active-project.js.map +1 -1
- package/dist/commands/project/list-projects.d.ts +2 -2
- package/dist/commands/project/list-projects.js +7 -11
- package/dist/commands/project/list-projects.js.map +1 -1
- package/dist/commands/project/select-project.d.ts +3 -3
- package/dist/commands/project/select-project.js +20 -25
- package/dist/commands/project/select-project.js.map +1 -1
- package/dist/commands/project/update-project.d.ts +5 -5
- package/dist/commands/project/update-project.js +18 -23
- package/dist/commands/project/update-project.js.map +1 -1
- package/dist/commands/start.d.ts +1 -1
- package/dist/commands/start.js +13 -18
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/stop.d.ts +1 -1
- package/dist/commands/stop.js +13 -18
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/token/create-token.d.ts +10 -9
- package/dist/commands/token/create-token.js +58 -60
- package/dist/commands/token/create-token.js.map +1 -1
- package/dist/commands/token/delete-token.d.ts +2 -2
- package/dist/commands/token/delete-token.js +13 -17
- package/dist/commands/token/delete-token.js.map +1 -1
- package/dist/commands/token/get-token.d.ts +3 -3
- package/dist/commands/token/get-token.js +13 -17
- package/dist/commands/token/get-token.js.map +1 -1
- package/dist/commands/token/list-tokens.d.ts +2 -2
- package/dist/commands/token/list-tokens.js +7 -11
- package/dist/commands/token/list-tokens.js.map +1 -1
- package/dist/commands/token/update-token.d.ts +8 -7
- package/dist/commands/token/update-token.js +30 -33
- package/dist/commands/token/update-token.js.map +1 -1
- package/dist/commands/whoami.d.ts +1 -1
- package/dist/commands/whoami.js +7 -11
- package/dist/commands/whoami.js.map +1 -1
- package/dist/common/base-command.d.ts +1 -12
- package/dist/common/base-command.js +13 -17
- package/dist/common/base-command.js.map +1 -1
- package/dist/common/constants.js +12 -15
- package/dist/common/constants.js.map +1 -1
- package/dist/common/error-messages.js +1 -5
- package/dist/common/error-messages.js.map +1 -1
- package/dist/common/prompts.js +7 -11
- package/dist/common/prompts.js.map +1 -1
- package/dist/common/validators.js +15 -21
- package/dist/common/validators.js.map +1 -1
- package/dist/helpers/app.js +17 -30
- package/dist/helpers/app.js.map +1 -1
- package/dist/helpers/degit.js +6 -11
- package/dist/helpers/degit.js.map +1 -1
- package/dist/helpers/jwk.d.ts +1 -1
- package/dist/helpers/jwk.js +16 -24
- package/dist/helpers/jwk.js.map +1 -1
- package/dist/helpers/token.d.ts +4 -5
- package/dist/helpers/token.js +13 -20
- package/dist/helpers/token.js.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/services/affinidi/auth/auth-result-page.js +1 -5
- package/dist/services/affinidi/auth/auth-result-page.js.map +1 -1
- package/dist/services/affinidi/auth/bff-auth-provider.d.ts +1 -1
- package/dist/services/affinidi/auth/bff-auth-provider.js +25 -30
- package/dist/services/affinidi/auth/bff-auth-provider.js.map +1 -1
- package/dist/services/affinidi/auth/types.d.ts +1 -1
- package/dist/services/affinidi/auth/types.js +1 -2
- package/dist/services/affinidi/bff-service.d.ts +5 -5
- package/dist/services/affinidi/bff-service.js +56 -61
- package/dist/services/affinidi/bff-service.js.map +1 -1
- package/dist/services/affinidi/bff-service.types.js +1 -2
- package/dist/services/affinidi/errors.js +21 -26
- package/dist/services/affinidi/errors.js.map +1 -1
- package/dist/services/affinidi/iam/iam.api.d.ts +21 -21
- package/dist/services/affinidi/iam/iam.api.js +6 -12
- package/dist/services/affinidi/iam/iam.api.js.map +1 -1
- package/dist/services/affinidi/iam/{index.d.ts → service.d.ts} +4 -4
- package/dist/services/affinidi/iam/{index.js → service.js} +36 -40
- package/dist/services/affinidi/iam/service.js.map +1 -0
- package/dist/services/affinidi/logger/console-logger-adapter.d.ts +1 -1
- package/dist/services/affinidi/logger/console-logger-adapter.js +1 -5
- package/dist/services/affinidi/logger/console-logger-adapter.js.map +1 -1
- package/dist/services/affinidi/logger/logger-adapter.js +1 -2
- package/dist/services/affinidi/vp-adapter/{index.d.ts → service.d.ts} +2 -2
- package/dist/services/affinidi/vp-adapter/{index.js → service.js} +38 -41
- package/dist/services/affinidi/vp-adapter/service.js.map +1 -0
- package/dist/services/affinidi/vp-adapter/vp-adapter.api.d.ts +43 -43
- package/dist/services/affinidi/vp-adapter/vp-adapter.api.js +8 -14
- package/dist/services/affinidi/vp-adapter/vp-adapter.api.js.map +1 -1
- package/dist/services/credentials-vault.d.ts +0 -1
- package/dist/services/credentials-vault.js +15 -21
- package/dist/services/credentials-vault.js.map +1 -1
- package/dist/services/env-config.d.ts +1 -1
- package/dist/services/env-config.js +6 -10
- package/dist/services/env-config.js.map +1 -1
- package/dist/services/generator/auth0.d.ts +1 -1
- package/dist/services/generator/auth0.js +3 -8
- package/dist/services/generator/auth0.js.map +1 -1
- package/dist/services/generator/env-configurer.js +5 -9
- package/dist/services/generator/env-configurer.js.map +1 -1
- package/package.json +39 -42
- package/theme.json +26 -0
- package/bin/dev +0 -17
- package/bin/run +0 -5
- package/dist/common/index.d.ts +0 -2
- package/dist/common/index.js +0 -8
- package/dist/common/index.js.map +0 -1
- package/dist/services/affinidi/iam/index.js.map +0 -1
- package/dist/services/affinidi/logger/index.d.ts +0 -2
- package/dist/services/affinidi/logger/index.js +0 -6
- package/dist/services/affinidi/logger/index.js.map +0 -1
- package/dist/services/affinidi/vp-adapter/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../../src/commands/project/list-projects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../../src/commands/project/list-projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAA;AAGnE,MAAM,OAAO,YAAa,SAAQ,WAAgC;IAIzD,KAAK,CAAC,GAAG;QACd,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACpC,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAA;QACzD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAEvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;QACzD,OAAO,kBAAkB,CAAA;IAC3B,CAAC;;AAVM,oBAAO,GAAG,qBAAqB,CAAA;AAC/B,qBAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { BaseCommand } from '../../common';
|
|
2
|
-
import { ProjectDto } from '../../services/affinidi/iam/iam.api';
|
|
1
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
2
|
+
import { ProjectDto } from '../../services/affinidi/iam/iam.api.js';
|
|
3
3
|
export declare class SelectProject extends BaseCommand<typeof SelectProject> {
|
|
4
4
|
static summary: string;
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
|
-
'project-id': import("@oclif/core/
|
|
7
|
+
'project-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
};
|
|
9
9
|
run(): Promise<ProjectDto>;
|
|
10
10
|
}
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const error_messages_1 = require("../../common/error-messages");
|
|
11
|
-
const validators_1 = require("../../common/validators");
|
|
12
|
-
const bff_service_1 = require("../../services/affinidi/bff-service");
|
|
13
|
-
class SelectProject extends common_1.BaseCommand {
|
|
1
|
+
import { select } from '@inquirer/prompts';
|
|
2
|
+
import { ux, Flags } from '@oclif/core';
|
|
3
|
+
import { CLIError } from '@oclif/core/errors';
|
|
4
|
+
import z from 'zod';
|
|
5
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
6
|
+
import { giveFlagInputErrorMessage } from '../../common/error-messages.js';
|
|
7
|
+
import { INPUT_LIMIT } from '../../common/validators.js';
|
|
8
|
+
import { bffService } from '../../services/affinidi/bff-service.js';
|
|
9
|
+
export class SelectProject extends BaseCommand {
|
|
14
10
|
async run() {
|
|
15
11
|
const { flags } = await this.parse(SelectProject);
|
|
16
|
-
const schema =
|
|
12
|
+
const schema = z.string().max(INPUT_LIMIT).uuid().optional();
|
|
17
13
|
let projectId = schema.parse(flags['project-id']);
|
|
18
|
-
|
|
19
|
-
const userProjects = await
|
|
20
|
-
|
|
14
|
+
ux.action.start('Fetching available projects');
|
|
15
|
+
const userProjects = await bffService.getProjects();
|
|
16
|
+
ux.action.stop('Fetched successfully!');
|
|
21
17
|
if (userProjects.length === 1) {
|
|
22
18
|
const response = {
|
|
23
19
|
id: userProjects[0].id,
|
|
@@ -30,30 +26,29 @@ class SelectProject extends common_1.BaseCommand {
|
|
|
30
26
|
}
|
|
31
27
|
if (!projectId) {
|
|
32
28
|
if (flags['no-input']) {
|
|
33
|
-
throw new
|
|
29
|
+
throw new CLIError(giveFlagInputErrorMessage('project-id'));
|
|
34
30
|
}
|
|
35
31
|
const choices = userProjects.map((project) => ({
|
|
36
32
|
value: project.id,
|
|
37
33
|
name: `${project.name} [id: ${project.id}]`,
|
|
38
34
|
}));
|
|
39
|
-
projectId = await (
|
|
35
|
+
projectId = await select({
|
|
40
36
|
message: 'Select a project to set as active',
|
|
41
37
|
choices,
|
|
42
38
|
});
|
|
43
39
|
}
|
|
44
40
|
const selectedProject = userProjects.find((project) => project.id === projectId);
|
|
45
41
|
if (!selectedProject) {
|
|
46
|
-
throw new
|
|
42
|
+
throw new CLIError('Project not found');
|
|
47
43
|
}
|
|
48
|
-
|
|
49
|
-
await
|
|
50
|
-
|
|
44
|
+
ux.action.start('Setting your active project');
|
|
45
|
+
await bffService.setSessionActiveProject(selectedProject.id);
|
|
46
|
+
ux.action.stop('Set successfully!');
|
|
51
47
|
if (!this.jsonEnabled())
|
|
52
48
|
this.logJson(selectedProject);
|
|
53
49
|
return selectedProject;
|
|
54
50
|
}
|
|
55
51
|
}
|
|
56
|
-
exports.SelectProject = SelectProject;
|
|
57
52
|
SelectProject.summary = 'Sets a project as the active project';
|
|
58
53
|
SelectProject.examples = [
|
|
59
54
|
'<%= config.bin %> <%= command.id %>',
|
|
@@ -61,7 +56,7 @@ SelectProject.examples = [
|
|
|
61
56
|
'<%= config.bin %> <%= command.id %> --project-id <project-id>',
|
|
62
57
|
];
|
|
63
58
|
SelectProject.flags = {
|
|
64
|
-
'project-id':
|
|
59
|
+
'project-id': Flags.string({
|
|
65
60
|
char: 'i',
|
|
66
61
|
summary: 'ID of the project',
|
|
67
62
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-project.js","sourceRoot":"","sources":["../../../src/commands/project/select-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"select-project.js","sourceRoot":"","sources":["../../../src/commands/project/select-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAA;AAGnE,MAAM,OAAO,aAAc,SAAQ,WAAiC;IAc3D,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAA;QAC5D,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;QAEjD,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC9C,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAA;QACnD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAEvC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG;gBACf,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;aAC3B,CAAA;YACD,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC/C,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,QAAQ,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAA;YAC7D,CAAC;YAED,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC7C,KAAK,EAAE,OAAO,CAAC,EAAE;gBACjB,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,SAAS,OAAO,CAAC,EAAE,GAAG;aAC5C,CAAC,CAAC,CAAA;YACH,SAAS,GAAG,MAAM,MAAM,CAAC;gBACvB,OAAO,EAAE,mCAAmC;gBAC5C,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAA;QAChF,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAA;QACzC,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC9C,MAAM,UAAU,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QAC5D,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAEnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACtD,OAAO,eAAe,CAAA;IACxB,CAAC;;AA1DM,qBAAO,GAAG,sCAAsC,CAAA;AAChD,sBAAQ,GAAG;IAChB,qCAAqC;IACrC,qDAAqD;IACrD,+DAA+D;CAChE,CAAA;AACM,mBAAK,GAAG;IACb,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;QACzB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,mBAAmB;KAC7B,CAAC;CACH,CAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { BaseCommand } from '../../common';
|
|
2
|
-
import { ProjectDto } from '../../services/affinidi/iam/iam.api';
|
|
1
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
2
|
+
import { ProjectDto } from '../../services/affinidi/iam/iam.api.js';
|
|
3
3
|
export declare class UpdateProject extends BaseCommand<typeof UpdateProject> {
|
|
4
4
|
static summary: string;
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
|
-
id: import("@oclif/core/
|
|
8
|
-
name: import("@oclif/core/
|
|
9
|
-
description: import("@oclif/core/
|
|
7
|
+
id: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
};
|
|
11
11
|
run(): Promise<ProjectDto>;
|
|
12
12
|
}
|
|
@@ -1,51 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const prompts_1 = require("../../common/prompts");
|
|
9
|
-
const validators_1 = require("../../common/validators");
|
|
10
|
-
const bff_service_1 = require("../../services/affinidi/bff-service");
|
|
11
|
-
class UpdateProject extends common_1.BaseCommand {
|
|
1
|
+
import { Flags, ux } from '@oclif/core';
|
|
2
|
+
import z from 'zod';
|
|
3
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
4
|
+
import { promptRequiredParameters } from '../../common/prompts.js';
|
|
5
|
+
import { INPUT_LIMIT } from '../../common/validators.js';
|
|
6
|
+
import { bffService } from '../../services/affinidi/bff-service.js';
|
|
7
|
+
export class UpdateProject extends BaseCommand {
|
|
12
8
|
async run() {
|
|
13
9
|
const { flags } = await this.parse(UpdateProject);
|
|
14
|
-
const promptFlags = await
|
|
15
|
-
const schema =
|
|
16
|
-
id:
|
|
17
|
-
name:
|
|
18
|
-
description:
|
|
10
|
+
const promptFlags = await promptRequiredParameters(['id'], flags);
|
|
11
|
+
const schema = z.object({
|
|
12
|
+
id: z.string().max(INPUT_LIMIT),
|
|
13
|
+
name: z.string().max(INPUT_LIMIT).optional(),
|
|
14
|
+
description: z.string().max(INPUT_LIMIT).optional(),
|
|
19
15
|
});
|
|
20
16
|
const validatedFlags = schema.parse(promptFlags);
|
|
21
|
-
|
|
22
|
-
const updateProjectOutput = await
|
|
17
|
+
ux.action.start('Updating the project');
|
|
18
|
+
const updateProjectOutput = await bffService.updateProject({
|
|
23
19
|
id: validatedFlags.id,
|
|
24
20
|
name: validatedFlags?.name ?? undefined,
|
|
25
21
|
description: validatedFlags?.description ?? undefined,
|
|
26
22
|
});
|
|
27
|
-
|
|
23
|
+
ux.action.stop('Updated successfully!');
|
|
28
24
|
if (!this.jsonEnabled())
|
|
29
25
|
this.logJson(updateProjectOutput);
|
|
30
26
|
return updateProjectOutput;
|
|
31
27
|
}
|
|
32
28
|
}
|
|
33
|
-
exports.UpdateProject = UpdateProject;
|
|
34
29
|
UpdateProject.summary = 'Updates project details';
|
|
35
30
|
UpdateProject.examples = [
|
|
36
31
|
'<%= config.bin %> <%= command.id %> -n MyUpdatedProjectName -d MyUpdatedProjectDescription',
|
|
37
32
|
'<%= config.bin %> <%= command.id %> --name="My project name" --description="My project description',
|
|
38
33
|
];
|
|
39
34
|
UpdateProject.flags = {
|
|
40
|
-
id:
|
|
35
|
+
id: Flags.string({
|
|
41
36
|
char: 'i',
|
|
42
37
|
summary: 'Project Id',
|
|
43
38
|
}),
|
|
44
|
-
name:
|
|
39
|
+
name: Flags.string({
|
|
45
40
|
char: 'n',
|
|
46
41
|
summary: 'Name of the project',
|
|
47
42
|
}),
|
|
48
|
-
description:
|
|
43
|
+
description: Flags.string({
|
|
49
44
|
char: 'd',
|
|
50
45
|
summary: 'Description of the project',
|
|
51
46
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-project.js","sourceRoot":"","sources":["../../../src/commands/project/update-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-project.js","sourceRoot":"","sources":["../../../src/commands/project/update-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAA;AAGnE,MAAM,OAAO,aAAc,SAAQ,WAAiC;IAqB3D,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;QAEjE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACtB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;YAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;SACpD,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAEhD,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAEvC,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC;YACzD,EAAE,EAAE,cAAc,CAAC,EAAE;YACrB,IAAI,EAAE,cAAc,EAAE,IAAI,IAAI,SAAS;YACvC,WAAW,EAAE,cAAc,EAAE,WAAW,IAAI,SAAS;SACtD,CAAC,CAAA;QAEF,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAEvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QAC1D,OAAO,mBAAmB,CAAA;IAC5B,CAAC;;AA3CM,qBAAO,GAAG,yBAAyB,CAAA;AACnC,sBAAQ,GAAG;IAChB,4FAA4F;IAC5F,oGAAoG;CACrG,CAAA;AACM,mBAAK,GAAG;IACb,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,YAAY;KACtB,CAAC;IACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,qBAAqB;KAC/B,CAAC;IACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,4BAA4B;KACtC,CAAC;CACH,CAAA"}
|
package/dist/commands/start.d.ts
CHANGED
package/dist/commands/start.js
CHANGED
|
@@ -1,30 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
7
|
-
const common_1 = require("../common");
|
|
8
|
-
const bff_service_1 = require("../services/affinidi/bff-service");
|
|
9
|
-
class Start extends common_1.BaseCommand {
|
|
1
|
+
import { ux } from '@oclif/core';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { BaseCommand } from '../common/base-command.js';
|
|
4
|
+
import { bffService } from '../services/affinidi/bff-service.js';
|
|
5
|
+
export class Start extends BaseCommand {
|
|
10
6
|
async run() {
|
|
11
|
-
|
|
7
|
+
ux.action.start('Authenticating in browser');
|
|
12
8
|
try {
|
|
13
|
-
await
|
|
14
|
-
const activeProject = await
|
|
15
|
-
|
|
16
|
-
this.log(`\nYour active project has been set to the project ${
|
|
9
|
+
await bffService.login();
|
|
10
|
+
const activeProject = await bffService.getActiveProject();
|
|
11
|
+
ux.action.stop('Authenticated successfully!');
|
|
12
|
+
this.log(`\nYour active project has been set to the project ${chalk.underline(activeProject.name)} with ID ${chalk.underline(activeProject.id)}` +
|
|
17
13
|
'\n\nIf you want to change the active project, please follow these steps:' +
|
|
18
|
-
`\n\n💡 To list all your projects run: ${
|
|
19
|
-
`\n\n💡 To change the active project run: ${
|
|
14
|
+
`\n\n💡 To list all your projects run: ${chalk.inverse('affinidi project list-projects')}` +
|
|
15
|
+
`\n\n💡 To change the active project run: ${chalk.inverse('affinidi project select-project -i <project-id>')}\n`);
|
|
20
16
|
}
|
|
21
17
|
catch (error) {
|
|
22
|
-
|
|
18
|
+
ux.action.stop('Authentication failed!');
|
|
23
19
|
this.error(error);
|
|
24
20
|
}
|
|
25
21
|
}
|
|
26
22
|
}
|
|
27
|
-
exports.Start = Start;
|
|
28
23
|
Start.summary = 'Log in to Affinidi';
|
|
29
24
|
Start.examples = ['<%= config.bin %> <%= command.id %>'];
|
|
30
25
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAEhE,MAAM,OAAO,KAAM,SAAQ,WAAyB;IAI3C,KAAK,CAAC,GAAG;QACd,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC5C,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;YACxB,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,CAAA;YACzD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;YAC7C,IAAI,CAAC,GAAG,CACN,qDAAqD,KAAK,CAAC,SAAS,CAClE,aAAa,CAAC,IAAI,CACnB,YAAY,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;gBAC9C,0EAA0E;gBAC1E,yCAAyC,KAAK,CAAC,OAAO,CAAC,gCAAgC,CAAC,EAAE;gBAC1F,4CAA4C,KAAK,CAAC,OAAO,CACvD,iDAAiD,CAClD,IAAI,CACR,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;YACxC,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;;AAvBM,aAAO,GAAG,oBAAoB,CAAA;AAC9B,cAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAA"}
|
package/dist/commands/stop.d.ts
CHANGED
package/dist/commands/stop.js
CHANGED
|
@@ -1,34 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const common_1 = require("../common");
|
|
9
|
-
const bff_service_1 = require("../services/affinidi/bff-service");
|
|
10
|
-
const credentials_vault_1 = require("../services/credentials-vault");
|
|
11
|
-
class Stop extends common_1.BaseCommand {
|
|
1
|
+
import { confirm } from '@inquirer/prompts';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { CLIError } from '@oclif/core/errors';
|
|
4
|
+
import { BaseCommand } from '../common/base-command.js';
|
|
5
|
+
import { bffService } from '../services/affinidi/bff-service.js';
|
|
6
|
+
import { credentialsVault } from '../services/credentials-vault.js';
|
|
7
|
+
export class Stop extends BaseCommand {
|
|
12
8
|
async run() {
|
|
13
9
|
const { flags } = await this.parse(Stop);
|
|
14
|
-
const sessionId =
|
|
10
|
+
const sessionId = credentialsVault.getSessionId();
|
|
15
11
|
if (!sessionId) {
|
|
16
12
|
this.warn('You are not logged in');
|
|
17
13
|
return;
|
|
18
14
|
}
|
|
19
15
|
if (!flags['no-input']) {
|
|
20
|
-
const stop = await (
|
|
16
|
+
const stop = await confirm({
|
|
21
17
|
message: 'Are you sure that you want to log out from Affinidi? Type "n" if you wish to continue using Affinidi CLI, type anything else to log out',
|
|
22
18
|
});
|
|
23
19
|
if (!stop)
|
|
24
|
-
throw new
|
|
20
|
+
throw new CLIError('Action canceled');
|
|
25
21
|
}
|
|
26
|
-
|
|
27
|
-
await
|
|
28
|
-
|
|
22
|
+
ux.action.start('Logging out');
|
|
23
|
+
await bffService.logout();
|
|
24
|
+
ux.action.stop('Logged out successfully!');
|
|
29
25
|
}
|
|
30
26
|
}
|
|
31
|
-
exports.Stop = Stop;
|
|
32
27
|
Stop.summary = 'Log out from Affinidi';
|
|
33
28
|
Stop.examples = ['<%= config.bin %> <%= command.id %>'];
|
|
34
29
|
//# sourceMappingURL=stop.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,MAAM,OAAO,IAAK,SAAQ,WAAwB;IAIzC,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,gBAAgB,CAAC,YAAY,EAAE,CAAA;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;YAClC,OAAM;QACR,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;gBACzB,OAAO,EACL,yIAAyI;aAC5I,CAAC,CAAA;YACF,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QAClD,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAC9B,MAAM,UAAU,CAAC,MAAM,EAAE,CAAA;QACzB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IAC5C,CAAC;;AAtBM,YAAO,GAAG,uBAAuB,CAAA;AACjC,aAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAA"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { BaseCommand
|
|
2
|
-
import {
|
|
1
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
2
|
+
import { SupportedAlgorithms } from '../../common/constants.js';
|
|
3
|
+
import { TokenDto } from '../../services/affinidi/iam/iam.api.js';
|
|
3
4
|
export declare class CreateToken extends BaseCommand<typeof CreateToken> {
|
|
4
5
|
static summary: string;
|
|
5
6
|
static examples: string[];
|
|
6
7
|
static flags: {
|
|
7
|
-
name: import("@oclif/core/
|
|
8
|
-
'key-id': import("@oclif/core/
|
|
9
|
-
'public-key-file': import("@oclif/core/
|
|
10
|
-
algorithm: import("@oclif/core/
|
|
11
|
-
'with-permissions': import("@oclif/core/
|
|
12
|
-
'auto-generate-key': import("@oclif/core/
|
|
13
|
-
passphrase: import("@oclif/core/
|
|
8
|
+
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
'key-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'public-key-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
algorithm: import("@oclif/core/interfaces").OptionFlag<SupportedAlgorithms, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'with-permissions': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
'auto-generate-key': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
passphrase: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
15
|
};
|
|
15
16
|
run(): Promise<TokenDto>;
|
|
16
17
|
private validateFlags;
|
|
@@ -1,28 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const token_1 = require("../../helpers/token");
|
|
15
|
-
const flagsSchema = zod_1.z
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { confirm, input } from '@inquirer/prompts';
|
|
3
|
+
import { Flags, ux } from '@oclif/core';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
7
|
+
import { SupportedAlgorithms } from '../../common/constants.js';
|
|
8
|
+
import { promptRequiredParameters } from '../../common/prompts.js';
|
|
9
|
+
import { INPUT_LIMIT, validateInputLength } from '../../common/validators.js';
|
|
10
|
+
import { getKeyType, pemToJWK } from '../../helpers/jwk.js';
|
|
11
|
+
import { addPrincipal, createToken, generateKeyPair, updatePolicies } from '../../helpers/token.js';
|
|
12
|
+
import { bffService } from '../../services/affinidi/bff-service.js';
|
|
13
|
+
const flagsSchema = z
|
|
16
14
|
.object({
|
|
17
|
-
name:
|
|
18
|
-
algorithm:
|
|
19
|
-
'key-id':
|
|
20
|
-
'public-key-file':
|
|
21
|
-
'auto-generate-key':
|
|
22
|
-
passphrase:
|
|
23
|
-
'with-permissions':
|
|
24
|
-
resources:
|
|
25
|
-
actions:
|
|
15
|
+
name: z.string().max(INPUT_LIMIT),
|
|
16
|
+
algorithm: z.nativeEnum(SupportedAlgorithms),
|
|
17
|
+
'key-id': z.string().max(INPUT_LIMIT).optional(),
|
|
18
|
+
'public-key-file': z.string().max(INPUT_LIMIT).optional(),
|
|
19
|
+
'auto-generate-key': z.boolean(),
|
|
20
|
+
passphrase: z.string().max(INPUT_LIMIT).optional(),
|
|
21
|
+
'with-permissions': z.boolean(),
|
|
22
|
+
resources: z.string().max(INPUT_LIMIT).optional().default('*'),
|
|
23
|
+
actions: z.string().max(INPUT_LIMIT).optional().default('*'),
|
|
26
24
|
})
|
|
27
25
|
.refine((data) => {
|
|
28
26
|
if (!data['auto-generate-key'] && !data['public-key-file']) {
|
|
@@ -33,53 +31,54 @@ const flagsSchema = zod_1.z
|
|
|
33
31
|
message: 'public-key-file is required when auto-generate-key is false',
|
|
34
32
|
path: ['public-key-file'],
|
|
35
33
|
});
|
|
36
|
-
class CreateToken extends
|
|
34
|
+
export class CreateToken extends BaseCommand {
|
|
37
35
|
async run() {
|
|
38
36
|
const { flags } = await this.parse(CreateToken);
|
|
39
37
|
const validatedFlags = await this.validateFlags(flags);
|
|
40
|
-
|
|
38
|
+
ux.action.start('Creating Personal Access Token');
|
|
41
39
|
let keypair, jwks;
|
|
42
|
-
const kid = validatedFlags['key-id'] ?? (
|
|
40
|
+
const kid = validatedFlags['key-id'] ?? uuidv4();
|
|
43
41
|
if (validatedFlags['auto-generate-key']) {
|
|
44
|
-
keypair =
|
|
42
|
+
keypair = generateKeyPair(kid, validatedFlags.algorithm, validatedFlags.passphrase);
|
|
45
43
|
jwks = keypair.jwks;
|
|
46
44
|
}
|
|
47
45
|
else {
|
|
48
|
-
const publicKeyPEM = await
|
|
49
|
-
const jwk = await
|
|
46
|
+
const publicKeyPEM = await readFile(validatedFlags['public-key-file'], 'utf8');
|
|
47
|
+
const jwk = await pemToJWK(publicKeyPEM, validatedFlags.algorithm);
|
|
50
48
|
jwks = {
|
|
51
49
|
keys: [
|
|
52
50
|
{
|
|
53
51
|
kid,
|
|
54
52
|
alg: validatedFlags.algorithm,
|
|
55
53
|
use: 'sig',
|
|
56
|
-
kty: jwk.kty ??
|
|
54
|
+
kty: jwk.kty ?? getKeyType(validatedFlags.algorithm),
|
|
57
55
|
n: jwk.n,
|
|
58
56
|
e: jwk.e,
|
|
59
57
|
},
|
|
60
58
|
],
|
|
61
59
|
};
|
|
62
60
|
}
|
|
63
|
-
const token = await
|
|
64
|
-
|
|
61
|
+
const token = await createToken(validatedFlags.name, validatedFlags.algorithm, jwks, validatedFlags['key-id']);
|
|
62
|
+
ux.action.stop('Created successfully!');
|
|
65
63
|
let projectId;
|
|
66
64
|
if (validatedFlags['with-permissions']) {
|
|
67
|
-
|
|
68
|
-
const promises = [
|
|
65
|
+
ux.action.start('Adding token to active project');
|
|
66
|
+
const promises = [addPrincipal(token.id), bffService.getActiveProject()];
|
|
69
67
|
const [, activeProject] = await Promise.all(promises);
|
|
70
68
|
projectId = activeProject.id;
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
ux.action.stop('Added successfully!');
|
|
70
|
+
ux.action.start('Granting permissions to token');
|
|
73
71
|
const actions = validatedFlags.actions ? validatedFlags.actions.split(' ') : ['*'];
|
|
74
72
|
const resources = validatedFlags.actions ? validatedFlags.actions.split(' ') : ['*'];
|
|
75
|
-
await
|
|
76
|
-
|
|
73
|
+
await updatePolicies(token.id, projectId, actions, resources);
|
|
74
|
+
ux.action.stop('Granted successfully!');
|
|
77
75
|
}
|
|
78
76
|
if (!this.jsonEnabled()) {
|
|
79
77
|
this.logJson(token);
|
|
80
|
-
this.log('\
|
|
78
|
+
this.log('\nCopy the following fields to use this token with Affinidi TDK');
|
|
81
79
|
this.logJson({
|
|
82
80
|
tokenId: token.id,
|
|
81
|
+
...(validatedFlags['key-id'] && { keyId: validatedFlags['key-id'] }),
|
|
83
82
|
...(validatedFlags['with-permissions'] && { projectId }),
|
|
84
83
|
...(validatedFlags['auto-generate-key'] && {
|
|
85
84
|
privateKey: keypair?.privateKey,
|
|
@@ -93,9 +92,9 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
93
92
|
return token;
|
|
94
93
|
}
|
|
95
94
|
async validateFlags(flags) {
|
|
96
|
-
let promptFlags = await
|
|
95
|
+
let promptFlags = await promptRequiredParameters(['name'], flags);
|
|
97
96
|
if (!promptFlags['public-key-file'] && !promptFlags['no-input']) {
|
|
98
|
-
promptFlags['auto-generate-key'] ?? (promptFlags['auto-generate-key'] = await
|
|
97
|
+
promptFlags['auto-generate-key'] ?? (promptFlags['auto-generate-key'] = await confirm({
|
|
99
98
|
message: 'Generate a new keypair for the token?',
|
|
100
99
|
}));
|
|
101
100
|
}
|
|
@@ -103,15 +102,15 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
103
102
|
promptFlags['auto-generate-key'] = !!promptFlags['auto-generate-key'];
|
|
104
103
|
}
|
|
105
104
|
if (promptFlags['auto-generate-key'] && !promptFlags['no-input']) {
|
|
106
|
-
promptFlags.passphrase ?? (promptFlags.passphrase =
|
|
105
|
+
promptFlags.passphrase ?? (promptFlags.passphrase = validateInputLength(await input({
|
|
107
106
|
message: 'Enter a passphrase to encrypt the private key. Leave it empty for no encryption',
|
|
108
|
-
}),
|
|
107
|
+
}), INPUT_LIMIT));
|
|
109
108
|
}
|
|
110
109
|
if (!promptFlags['auto-generate-key']) {
|
|
111
|
-
promptFlags = await
|
|
110
|
+
promptFlags = await promptRequiredParameters(['public-key-file'], promptFlags);
|
|
112
111
|
}
|
|
113
112
|
if (!promptFlags['no-input']) {
|
|
114
|
-
promptFlags['with-permissions'] ?? (promptFlags['with-permissions'] = await
|
|
113
|
+
promptFlags['with-permissions'] ?? (promptFlags['with-permissions'] = await confirm({
|
|
115
114
|
message: 'Add token to active project and grant permissions?',
|
|
116
115
|
}));
|
|
117
116
|
}
|
|
@@ -119,19 +118,18 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
119
118
|
promptFlags['with-permissions'] = !!promptFlags['with-permissions'];
|
|
120
119
|
}
|
|
121
120
|
if (!promptFlags['no-input'] && promptFlags['with-permissions']) {
|
|
122
|
-
promptFlags.resources =
|
|
121
|
+
promptFlags.resources = validateInputLength(await input({
|
|
123
122
|
message: 'Enter the allowed resources, separated by spaces. Use * to allow access to all project resources',
|
|
124
123
|
default: '*',
|
|
125
|
-
}),
|
|
126
|
-
promptFlags.actions =
|
|
124
|
+
}), INPUT_LIMIT);
|
|
125
|
+
promptFlags.actions = validateInputLength(await input({
|
|
127
126
|
message: 'Enter the allowed actions, separated by spaces. Use * to allow all actions',
|
|
128
127
|
default: '*',
|
|
129
|
-
}),
|
|
128
|
+
}), INPUT_LIMIT);
|
|
130
129
|
}
|
|
131
130
|
return flagsSchema.parse(promptFlags);
|
|
132
131
|
}
|
|
133
132
|
}
|
|
134
|
-
exports.CreateToken = CreateToken;
|
|
135
133
|
CreateToken.summary = 'Creates a Personal Access Token (PAT)';
|
|
136
134
|
CreateToken.examples = [
|
|
137
135
|
'<%= config.bin %> <%= command.id %>',
|
|
@@ -143,34 +141,34 @@ CreateToken.examples = [
|
|
|
143
141
|
'<%= config.bin %> <%= command.id %> -n MyNewToken -g -w',
|
|
144
142
|
];
|
|
145
143
|
CreateToken.flags = {
|
|
146
|
-
name:
|
|
144
|
+
name: Flags.string({
|
|
147
145
|
char: 'n',
|
|
148
146
|
summary: 'Name of the Personal Access Token, at least 8 chars long',
|
|
149
147
|
}),
|
|
150
|
-
'key-id':
|
|
148
|
+
'key-id': Flags.string({
|
|
151
149
|
char: 'k',
|
|
152
150
|
summary: 'Identifier of the key (kid)',
|
|
153
151
|
}),
|
|
154
|
-
'public-key-file':
|
|
152
|
+
'public-key-file': Flags.string({
|
|
155
153
|
char: 'f',
|
|
156
154
|
summary: 'Location of the public key PEM file',
|
|
157
155
|
}),
|
|
158
|
-
algorithm:
|
|
156
|
+
algorithm: Flags.custom({
|
|
159
157
|
char: 'a',
|
|
160
158
|
summary: 'The specific cryptographic algorithm used with the key',
|
|
161
|
-
options: Object.values(
|
|
162
|
-
default:
|
|
159
|
+
options: Object.values(SupportedAlgorithms),
|
|
160
|
+
default: SupportedAlgorithms.RS256,
|
|
163
161
|
})(),
|
|
164
|
-
'with-permissions':
|
|
162
|
+
'with-permissions': Flags.boolean({
|
|
165
163
|
char: 'w',
|
|
166
164
|
summary: 'Set token policies to perform any action on the active project',
|
|
167
165
|
}),
|
|
168
|
-
'auto-generate-key':
|
|
166
|
+
'auto-generate-key': Flags.boolean({
|
|
169
167
|
char: 'g',
|
|
170
168
|
summary: 'Auto-generate private-public key pair',
|
|
171
169
|
exclusive: ['public-key-file'],
|
|
172
170
|
}),
|
|
173
|
-
passphrase:
|
|
171
|
+
passphrase: Flags.string({
|
|
174
172
|
char: 'p',
|
|
175
173
|
summary: 'Passphrase for generation of private public key pair',
|
|
176
174
|
dependsOn: ['auto-generate-key'],
|