@affinidi/cli 2.6.1 → 2.8.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 +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 +123 -81
- 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 -13
- package/dist/commands/token/create-token.js +56 -134
- 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.d.ts +38 -2
- package/dist/helpers/app.js +21 -28
- 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 +29 -0
- package/dist/helpers/token.js +78 -0
- package/dist/helpers/token.js.map +1 -0
- 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.d.ts +12 -1
- package/dist/services/generator/env-configurer.js +15 -14
- package/dist/services/generator/env-configurer.js.map +1 -1
- package/package.json +40 -43
- 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
package/README.md
CHANGED
|
@@ -251,8 +251,8 @@ When you run `affinidi stop` your session information is deleted.
|
|
|
251
251
|
<!-- commands -->
|
|
252
252
|
# Command Topics
|
|
253
253
|
|
|
254
|
-
* [`affinidi autocomplete`](docs/autocomplete.md) -
|
|
255
|
-
* [`affinidi commands`](docs/commands.md) -
|
|
254
|
+
* [`affinidi autocomplete`](docs/autocomplete.md) - Display autocomplete installation instructions.
|
|
255
|
+
* [`affinidi commands`](docs/commands.md) - List all affinidi commands.
|
|
256
256
|
* [`affinidi generate`](docs/generate.md) - Use these commands to generate code to get started or to scaffold your solution
|
|
257
257
|
* [`affinidi help`](docs/help.md) - Display help for affinidi.
|
|
258
258
|
* [`affinidi iam`](docs/iam.md) - Use these commands to manage policies for access configuration
|
package/bin/dev.cmd
CHANGED
package/bin/dev.js
ADDED
package/bin/run.js
ADDED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BaseCommand } from '../../common';
|
|
2
|
-
import { AppsInformation } from '../../helpers/app';
|
|
1
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
2
|
+
import { AppsInformation } from '../../helpers/app.js';
|
|
3
3
|
export default class GenerateApp extends BaseCommand<typeof GenerateApp> {
|
|
4
4
|
static apps: AppsInformation;
|
|
5
5
|
static providers: string[];
|
|
@@ -8,11 +8,11 @@ export default class GenerateApp extends BaseCommand<typeof GenerateApp> {
|
|
|
8
8
|
static summary: string;
|
|
9
9
|
static examples: string[];
|
|
10
10
|
static flags: {
|
|
11
|
-
provider: import("@oclif/core/
|
|
12
|
-
framework: import("@oclif/core/
|
|
13
|
-
library: import("@oclif/core/
|
|
14
|
-
path: import("@oclif/core/
|
|
15
|
-
force: import("@oclif/core/
|
|
11
|
+
provider: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
framework: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
library: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
path: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
16
|
};
|
|
17
17
|
init(): Promise<void>;
|
|
18
18
|
run(): Promise<void>;
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { confirm, input, password, select } from '@inquirer/prompts';
|
|
2
|
+
import { ux, Flags } from '@oclif/core';
|
|
3
|
+
import { CLIError } from '@oclif/core/errors';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
import z from 'zod';
|
|
6
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
7
|
+
import { RefAppProvider, SupportedAlgorithms } from '../../common/constants.js';
|
|
8
|
+
import { giveFlagInputErrorMessage } from '../../common/error-messages.js';
|
|
9
|
+
import { promptRequiredParameters } from '../../common/prompts.js';
|
|
10
|
+
import { INPUT_LIMIT, TOKEN_LIMIT, validateInputLength } from '../../common/validators.js';
|
|
11
|
+
import { getAppMetadataToken, getAppName, getApps, getRedirectUri, getSupportedAppsInformation, } from '../../helpers/app.js';
|
|
12
|
+
import { cloneWithDegit } from '../../helpers/degit.js';
|
|
13
|
+
import { addPrincipal, createToken, generateKeyPair, updatePolicies } from '../../helpers/token.js';
|
|
14
|
+
import { bffService } from '../../services/affinidi/bff-service.js';
|
|
15
|
+
import { vpAdapterService } from '../../services/affinidi/vp-adapter/service.js';
|
|
16
|
+
import { createAuth0Resources } from '../../services/generator/auth0.js';
|
|
17
|
+
import { configureAppEnvironment } from '../../services/generator/env-configurer.js';
|
|
18
18
|
const APPS_INFORMATION_GITHUB_LOCATION = 'samples/apps.json';
|
|
19
19
|
const APPS_GITHUB_LOCATION = 'affinidi/reference-app-affinidi-vault/samples';
|
|
20
|
-
class GenerateApp extends
|
|
20
|
+
class GenerateApp extends BaseCommand {
|
|
21
21
|
async init() {
|
|
22
|
-
GenerateApp.apps = await
|
|
23
|
-
const { providers, frameworks, libraries } =
|
|
22
|
+
GenerateApp.apps = await getApps(APPS_INFORMATION_GITHUB_LOCATION);
|
|
23
|
+
const { providers, frameworks, libraries } = getSupportedAppsInformation(GenerateApp.apps);
|
|
24
24
|
GenerateApp.providers = providers;
|
|
25
25
|
GenerateApp.frameworks = frameworks;
|
|
26
26
|
GenerateApp.libraries = libraries;
|
|
27
|
-
GenerateApp.flags.provider =
|
|
27
|
+
GenerateApp.flags.provider = Flags.string({
|
|
28
28
|
char: 'a',
|
|
29
29
|
summary: 'Authentication provider for the sample app',
|
|
30
30
|
options: providers,
|
|
@@ -35,57 +35,64 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
35
35
|
const { flags } = await this.parse(GenerateApp);
|
|
36
36
|
if (flags['no-input']) {
|
|
37
37
|
if (!flags.provider)
|
|
38
|
-
throw new
|
|
38
|
+
throw new CLIError(giveFlagInputErrorMessage('provider'));
|
|
39
39
|
if (!flags.framework)
|
|
40
|
-
throw new
|
|
40
|
+
throw new CLIError(giveFlagInputErrorMessage('framework'));
|
|
41
41
|
}
|
|
42
42
|
const provider = flags.provider ??
|
|
43
|
-
(await
|
|
44
|
-
message: 'Select the provider for the sample app
|
|
43
|
+
(await select({
|
|
44
|
+
message: 'Select the provider for the sample app',
|
|
45
45
|
choices: GenerateApp.providers.map((value) => ({
|
|
46
46
|
name: value,
|
|
47
47
|
value,
|
|
48
48
|
})),
|
|
49
49
|
}));
|
|
50
|
+
// Make nextjs first option
|
|
51
|
+
const frameworks = GenerateApp.frameworks.get(provider);
|
|
52
|
+
const nextJsIndex = frameworks.indexOf('nextjs');
|
|
53
|
+
if (nextJsIndex > 0) {
|
|
54
|
+
frameworks.unshift(frameworks.splice(nextJsIndex, 1)[0]);
|
|
55
|
+
}
|
|
50
56
|
const framework = flags.framework ??
|
|
51
|
-
(await
|
|
52
|
-
message: 'Select the framework for the sample app
|
|
53
|
-
choices:
|
|
57
|
+
(await select({
|
|
58
|
+
message: 'Select the framework for the sample app',
|
|
59
|
+
choices: frameworks.map((value) => ({
|
|
54
60
|
name: value,
|
|
55
61
|
value,
|
|
56
62
|
})),
|
|
57
63
|
}));
|
|
58
64
|
const library = flags.library ??
|
|
59
|
-
(await
|
|
60
|
-
message: 'Select the library for the sample app
|
|
65
|
+
(await select({
|
|
66
|
+
message: 'Select the library for the sample app',
|
|
61
67
|
choices: GenerateApp.libraries.get(`${provider}-${framework}`).map((value) => ({
|
|
62
68
|
name: value,
|
|
63
69
|
value,
|
|
64
70
|
})),
|
|
65
71
|
}));
|
|
66
|
-
const promptFlags = await
|
|
72
|
+
const promptFlags = await promptRequiredParameters(['path'], flags);
|
|
67
73
|
promptFlags.framework = framework;
|
|
68
74
|
promptFlags.provider = provider;
|
|
69
75
|
promptFlags.library = library;
|
|
70
|
-
const schema =
|
|
71
|
-
path:
|
|
72
|
-
framework:
|
|
73
|
-
provider:
|
|
74
|
-
library:
|
|
76
|
+
const schema = z.object({
|
|
77
|
+
path: z.string().max(INPUT_LIMIT),
|
|
78
|
+
framework: z.string().max(INPUT_LIMIT),
|
|
79
|
+
provider: z.string().max(INPUT_LIMIT),
|
|
80
|
+
library: z.string().max(INPUT_LIMIT),
|
|
75
81
|
});
|
|
76
82
|
const validatedFlags = schema.parse(promptFlags);
|
|
77
|
-
const appName =
|
|
78
|
-
|
|
79
|
-
await
|
|
80
|
-
|
|
83
|
+
const appName = getAppName(framework, provider, library);
|
|
84
|
+
ux.action.start('Generating sample app');
|
|
85
|
+
await cloneWithDegit(`${APPS_GITHUB_LOCATION}/${appName}`, validatedFlags.path, flags.force);
|
|
86
|
+
// await cloneWithDegit(`${APPS_GITHUB_LOCATION}/${appName}#token-metadata`, validatedFlags.path, flags.force)
|
|
87
|
+
ux.action.stop('Generated successfully!');
|
|
81
88
|
if (!flags['no-input']) {
|
|
82
|
-
const
|
|
83
|
-
message: 'Automatically configure
|
|
89
|
+
const configureLogin = await confirm({
|
|
90
|
+
message: 'Automatically configure Affinidi Login?',
|
|
84
91
|
});
|
|
85
|
-
if (
|
|
86
|
-
|
|
87
|
-
const configs = await
|
|
88
|
-
|
|
92
|
+
if (configureLogin) {
|
|
93
|
+
ux.action.start('Fetching available login configurations');
|
|
94
|
+
const configs = await vpAdapterService.listLoginConfigurations();
|
|
95
|
+
ux.action.stop('Fetched successfully!');
|
|
89
96
|
const choices = configs.configurations.map((config) => ({
|
|
90
97
|
value: {
|
|
91
98
|
id: config.configurationId,
|
|
@@ -93,69 +100,103 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
93
100
|
},
|
|
94
101
|
name: `${config.name} [id: ${config.configurationId}]`,
|
|
95
102
|
}));
|
|
96
|
-
choices.
|
|
103
|
+
choices.unshift({
|
|
97
104
|
value: {
|
|
98
105
|
id: 'new-config',
|
|
99
106
|
auth: undefined,
|
|
100
107
|
},
|
|
101
108
|
name: 'Create new login config',
|
|
102
109
|
});
|
|
103
|
-
const selectedConfig = await
|
|
110
|
+
const selectedConfig = await select({
|
|
104
111
|
message: 'Select a login configuration to use in your sample app',
|
|
105
112
|
choices,
|
|
106
113
|
});
|
|
107
|
-
let newConfigClientSecret = undefined;
|
|
108
114
|
// Create a new login config
|
|
109
115
|
if (selectedConfig.id === 'new-config') {
|
|
110
|
-
const newConfigName =
|
|
111
|
-
|
|
116
|
+
const newConfigName = validateInputLength(await input({
|
|
117
|
+
message: `Enter a name for the login config`,
|
|
118
|
+
default: `sample-login-config-${Math.random().toString(36).slice(2, 7)}`,
|
|
119
|
+
}), INPUT_LIMIT);
|
|
120
|
+
ux.action.start('Creating login configuration');
|
|
121
|
+
const redirectUri = getRedirectUri(GenerateApp.apps, appName);
|
|
112
122
|
const createLoginConfigInput = {
|
|
113
123
|
name: newConfigName,
|
|
114
124
|
redirectUris: [redirectUri],
|
|
115
125
|
};
|
|
116
|
-
const createConfigOutput = await
|
|
117
|
-
|
|
126
|
+
const createConfigOutput = await vpAdapterService.createLoginConfig(createLoginConfigInput);
|
|
127
|
+
ux.action.stop('Created successfully!');
|
|
118
128
|
this.logJson({ loginConfig: createConfigOutput.auth });
|
|
129
|
+
this.warn(this.chalk.yellowBright.bold("\nPlease save the clientSecret somewhere safe. It will be added to the app env's file. You will not be able to view it again.\n"));
|
|
119
130
|
selectedConfig.id = createConfigOutput.configurationId;
|
|
120
131
|
selectedConfig.auth = createConfigOutput.auth;
|
|
121
|
-
newConfigClientSecret = createConfigOutput.auth.clientSecret;
|
|
122
|
-
}
|
|
123
|
-
const clientSecret = newConfigClientSecret ??
|
|
124
|
-
(0, validators_1.validateInputLength)(await (0, password_1.default)({
|
|
125
|
-
message: "What is the login configuration's client secret?",
|
|
126
|
-
mask: true,
|
|
127
|
-
}), validators_1.INPUT_LIMIT);
|
|
128
|
-
if (provider === common_1.RefAppProvider.AFFINIDI) {
|
|
129
|
-
core_1.ux.action.start('Configuring sample app');
|
|
130
|
-
await (0, env_configurer_1.configureAppEnvironment)(validatedFlags.path, selectedConfig.auth.clientId, clientSecret, selectedConfig.auth.issuer);
|
|
131
|
-
core_1.ux.action.stop('Configured successfully!');
|
|
132
132
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
133
|
+
let clientId = selectedConfig.auth.clientId;
|
|
134
|
+
let clientSecret = selectedConfig.auth.clientSecret;
|
|
135
|
+
let issuer = selectedConfig.auth.issuer;
|
|
136
|
+
let connectionName;
|
|
137
|
+
clientSecret ?? (clientSecret = validateInputLength(await password({
|
|
138
|
+
message: "What is the login configuration's client secret?",
|
|
139
|
+
mask: true,
|
|
140
|
+
}), INPUT_LIMIT));
|
|
141
|
+
if (provider === RefAppProvider.AUTH0) {
|
|
142
|
+
const domain = validateInputLength(await input({ message: 'What is your Auth0 tenant URL?' }), INPUT_LIMIT);
|
|
143
|
+
const accessToken = validateInputLength(await password({ message: 'What is your Auth0 access token?' }), TOKEN_LIMIT);
|
|
144
|
+
ux.action.start('Creating Auth0 resources');
|
|
145
|
+
connectionName = `Affinidi-${framework}`;
|
|
146
|
+
const { auth0ClientId, auth0ClientSecret } = await createAuth0Resources(accessToken, domain, selectedConfig.auth.clientId, clientSecret, selectedConfig.auth.issuer, connectionName, {
|
|
139
147
|
callbackUrl: GenerateApp.apps.appName.redirectUris.callbackUrl,
|
|
140
148
|
logOutUrl: GenerateApp.apps.appName.redirectUris.logOutUrl,
|
|
141
149
|
webOriginUrl: GenerateApp.apps.appName.redirectUris.webOriginUrl,
|
|
142
150
|
});
|
|
143
|
-
|
|
144
|
-
|
|
151
|
+
clientId = auth0ClientId;
|
|
152
|
+
clientSecret = auth0ClientSecret;
|
|
153
|
+
issuer = domain;
|
|
154
|
+
ux.action.stop('Created successfully!');
|
|
155
|
+
}
|
|
156
|
+
const tokenMetadata = getAppMetadataToken(GenerateApp.apps, appName);
|
|
157
|
+
let tokenParams;
|
|
158
|
+
if (tokenMetadata) {
|
|
159
|
+
const configureToken = await confirm({
|
|
160
|
+
message: 'Configure Personal Access Token to enable features like credential issuance and Affinidi Iota Framework?',
|
|
161
|
+
});
|
|
162
|
+
if (configureToken) {
|
|
163
|
+
ux.action.start('Creating Personal Access Token and assigning app permissions on active project');
|
|
164
|
+
const keypair = generateKeyPair(uuidv4(), SupportedAlgorithms.RS256);
|
|
165
|
+
const jwks = keypair.jwks;
|
|
166
|
+
const tokenName = `sample-app-token-${Math.random().toString(36).slice(2, 7)}`;
|
|
167
|
+
const token = await createToken(tokenName, SupportedAlgorithms.RS256, jwks);
|
|
168
|
+
const promises = [addPrincipal(token.id), bffService.getActiveProject()];
|
|
169
|
+
const [, activeProject] = await Promise.all(promises);
|
|
170
|
+
const projectId = activeProject.id;
|
|
171
|
+
await updatePolicies(token.id, projectId, tokenMetadata.policy.actions, [`*:${projectId}:*`]);
|
|
172
|
+
tokenParams = {
|
|
173
|
+
projectId,
|
|
174
|
+
tokenId: token.id,
|
|
175
|
+
privateKey: keypair.privateKey,
|
|
176
|
+
};
|
|
177
|
+
ux.action.stop('Created successfully!');
|
|
178
|
+
this.logJson(tokenParams);
|
|
179
|
+
this.warn(this.chalk.yellowBright.bold("\nPlease save the privateKey somewhere safe. It will be added to the app env's file. You will not be able to view it again.\n"));
|
|
180
|
+
}
|
|
145
181
|
}
|
|
182
|
+
await configureAppEnvironment(validatedFlags.path, {
|
|
183
|
+
clientId,
|
|
184
|
+
clientSecret,
|
|
185
|
+
issuer,
|
|
186
|
+
connectionName,
|
|
187
|
+
}, tokenParams);
|
|
146
188
|
}
|
|
147
189
|
}
|
|
148
|
-
this.log('
|
|
190
|
+
this.log('\nPlease read the generated README for instructions on how to run your sample app\n');
|
|
149
191
|
}
|
|
150
192
|
catch (err) {
|
|
151
193
|
if (!err?.oclif)
|
|
152
|
-
throw new
|
|
194
|
+
throw new CLIError('Unexpected error while generating sample app');
|
|
153
195
|
else
|
|
154
|
-
throw new
|
|
196
|
+
throw new CLIError(err);
|
|
155
197
|
}
|
|
156
198
|
}
|
|
157
199
|
}
|
|
158
|
-
exports.default = GenerateApp;
|
|
159
200
|
GenerateApp.providers = [];
|
|
160
201
|
GenerateApp.summary = 'Generates code samples that integrates Affinidi Login. Requires git';
|
|
161
202
|
GenerateApp.examples = [
|
|
@@ -164,24 +205,25 @@ GenerateApp.examples = [
|
|
|
164
205
|
'<%= config.bin %> <%= command.id %> --path "../my-app" --framework django --provider affinidi --force',
|
|
165
206
|
];
|
|
166
207
|
GenerateApp.flags = {
|
|
167
|
-
provider:
|
|
208
|
+
provider: Flags.string({
|
|
168
209
|
char: 'a',
|
|
169
210
|
summary: 'Authentication provider for the sample app',
|
|
170
211
|
}),
|
|
171
|
-
framework:
|
|
212
|
+
framework: Flags.string({
|
|
172
213
|
char: 'f',
|
|
173
214
|
summary: 'Framework for the sample app',
|
|
174
215
|
}),
|
|
175
|
-
library:
|
|
216
|
+
library: Flags.string({
|
|
176
217
|
char: 'l',
|
|
177
218
|
summary: 'Library for the sample app',
|
|
178
219
|
}),
|
|
179
|
-
path:
|
|
220
|
+
path: Flags.string({
|
|
180
221
|
char: 'p',
|
|
181
222
|
summary: 'Relative or absolute path where sample app should be cloned into',
|
|
182
223
|
}),
|
|
183
|
-
force:
|
|
224
|
+
force: Flags.boolean({
|
|
184
225
|
summary: 'Override destination directory if exists',
|
|
185
226
|
}),
|
|
186
227
|
};
|
|
228
|
+
export default GenerateApp;
|
|
187
229
|
//# sourceMappingURL=app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { BaseCommand } from '../../common';
|
|
1
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
2
2
|
export declare class AddPrincipal extends BaseCommand<typeof AddPrincipal> {
|
|
3
3
|
static summary: string;
|
|
4
4
|
static description: string;
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
|
-
'principal-id': import("@oclif/core/
|
|
8
|
-
'principal-type': import("@oclif/core/
|
|
7
|
+
'principal-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
'principal-type': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
};
|
|
10
10
|
run(): Promise<void>;
|
|
11
11
|
}
|
|
@@ -1,63 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const validators_1 = require("../../common/validators");
|
|
14
|
-
const iam_1 = require("../../services/affinidi/iam");
|
|
15
|
-
class AddPrincipal 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 chalk from 'chalk';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
7
|
+
import { giveFlagInputErrorMessage } from '../../common/error-messages.js';
|
|
8
|
+
import { promptRequiredParameters } from '../../common/prompts.js';
|
|
9
|
+
import { INPUT_LIMIT } from '../../common/validators.js';
|
|
10
|
+
import { iamService } from '../../services/affinidi/iam/service.js';
|
|
11
|
+
import { PrincipalTypes } from '../../common/constants.js';
|
|
12
|
+
export class AddPrincipal extends BaseCommand {
|
|
16
13
|
async run() {
|
|
17
14
|
const { flags } = await this.parse(AddPrincipal);
|
|
18
|
-
const promptFlags = await
|
|
15
|
+
const promptFlags = await promptRequiredParameters(['principal-id'], flags);
|
|
19
16
|
if (flags['no-input']) {
|
|
20
17
|
if (!promptFlags['principal-type']) {
|
|
21
|
-
throw new
|
|
18
|
+
throw new CLIError(giveFlagInputErrorMessage('principal-type'));
|
|
22
19
|
}
|
|
23
20
|
}
|
|
24
|
-
promptFlags['principal-type'] ?? (promptFlags['principal-type'] = await
|
|
21
|
+
promptFlags['principal-type'] ?? (promptFlags['principal-type'] = await select({
|
|
25
22
|
message: 'Select the principal-type',
|
|
26
|
-
choices: Object.values(
|
|
23
|
+
choices: Object.values(PrincipalTypes).map((value) => ({
|
|
27
24
|
name: value,
|
|
28
25
|
value,
|
|
29
26
|
})),
|
|
30
27
|
}));
|
|
31
|
-
const schema =
|
|
32
|
-
'principal-id':
|
|
33
|
-
'principal-type':
|
|
28
|
+
const schema = z.object({
|
|
29
|
+
'principal-id': z.string().max(INPUT_LIMIT).uuid(),
|
|
30
|
+
'principal-type': z.nativeEnum(PrincipalTypes),
|
|
34
31
|
});
|
|
35
32
|
const validatedFlags = schema.parse(promptFlags);
|
|
36
|
-
|
|
37
|
-
await
|
|
33
|
+
ux.action.start('Adding principal to project');
|
|
34
|
+
await iamService.addPrincipalToProject({
|
|
38
35
|
principalId: validatedFlags['principal-id'],
|
|
39
36
|
principalType: validatedFlags['principal-type'],
|
|
40
37
|
});
|
|
41
|
-
|
|
38
|
+
ux.action.stop('Added successfully!');
|
|
42
39
|
}
|
|
43
40
|
}
|
|
44
|
-
exports.AddPrincipal = AddPrincipal;
|
|
45
41
|
AddPrincipal.summary = 'Adds a principal (user or token) to the active project';
|
|
46
|
-
AddPrincipal.description = `To change your active project, use command ${
|
|
42
|
+
AddPrincipal.description = `To change your active project, use command ${chalk.inverse('affinidi project select-project')}`;
|
|
47
43
|
AddPrincipal.examples = [
|
|
48
44
|
'<%= config.bin %> <%= command.id %> -i <uuid>',
|
|
49
45
|
'<%= config.bin %> <%= command.id %> --principal-id <uuid> --principal-type token',
|
|
50
46
|
];
|
|
51
47
|
AddPrincipal.flags = {
|
|
52
|
-
'principal-id':
|
|
48
|
+
'principal-id': Flags.string({
|
|
53
49
|
char: 'i',
|
|
54
50
|
summary: 'ID of the principal',
|
|
55
|
-
description: `Get a list of possible IDs with command ${
|
|
51
|
+
description: `Get a list of possible IDs with command ${chalk.inverse('affinidi token list-tokens')}`,
|
|
56
52
|
}),
|
|
57
|
-
'principal-type':
|
|
53
|
+
'principal-type': Flags.string({
|
|
58
54
|
char: 't',
|
|
59
55
|
summary: 'Type of the principal',
|
|
60
|
-
options: Object.values(
|
|
56
|
+
options: Object.values(PrincipalTypes),
|
|
61
57
|
}),
|
|
62
58
|
};
|
|
63
59
|
//# sourceMappingURL=add-principal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-principal.js","sourceRoot":"","sources":["../../../src/commands/iam/add-principal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add-principal.js","sourceRoot":"","sources":["../../../src/commands/iam/add-principal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { BaseCommand } from '../../common';
|
|
2
|
-
import { PolicyDto } from '../../services/affinidi/iam/iam.api';
|
|
1
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
2
|
+
import { PolicyDto } from '../../services/affinidi/iam/iam.api.js';
|
|
3
3
|
export declare class GetPolicies extends BaseCommand<typeof GetPolicies> {
|
|
4
4
|
static summary: string;
|
|
5
5
|
static description: string;
|
|
6
6
|
static examples: string[];
|
|
7
7
|
static flags: {
|
|
8
|
-
'principal-id': import("@oclif/core/
|
|
9
|
-
'principal-type': import("@oclif/core/
|
|
8
|
+
'principal-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
'principal-type': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
};
|
|
11
11
|
run(): Promise<PolicyDto>;
|
|
12
12
|
}
|