@affinidi/cli 2.0.0-beta.5 → 2.0.0-beta.7
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 +151 -235
- package/dist/commands/generate/app.d.ts +1 -0
- package/dist/commands/generate/app.js +79 -28
- package/dist/commands/generate/app.js.map +1 -1
- package/dist/commands/iam/add-principal.d.ts +1 -1
- package/dist/commands/iam/add-principal.js +19 -3
- package/dist/commands/iam/add-principal.js.map +1 -1
- package/dist/commands/iam/get-policies.d.ts +1 -1
- package/dist/commands/iam/get-policies.js +17 -2
- package/dist/commands/iam/get-policies.js.map +1 -1
- package/dist/commands/iam/remove-principal.d.ts +1 -1
- package/dist/commands/iam/remove-principal.js +17 -2
- package/dist/commands/iam/remove-principal.js.map +1 -1
- package/dist/commands/iam/update-policies.d.ts +1 -1
- package/dist/commands/iam/update-policies.js +33 -15
- package/dist/commands/iam/update-policies.js.map +1 -1
- package/dist/commands/login/add-user-to-group.js +9 -1
- package/dist/commands/login/add-user-to-group.js.map +1 -1
- package/dist/commands/login/create-config.js +23 -11
- package/dist/commands/login/create-config.js.map +1 -1
- package/dist/commands/login/create-group.js +7 -1
- package/dist/commands/login/create-group.js.map +1 -1
- package/dist/commands/login/delete-config.js +10 -3
- package/dist/commands/login/delete-config.js.map +1 -1
- package/dist/commands/login/delete-group.js +10 -3
- package/dist/commands/login/delete-group.js.map +1 -1
- package/dist/commands/login/get-config.js +8 -1
- package/dist/commands/login/get-config.js.map +1 -1
- package/dist/commands/login/get-group.js +8 -1
- package/dist/commands/login/get-group.js.map +1 -1
- package/dist/commands/login/list-users-in-group.js +8 -1
- package/dist/commands/login/list-users-in-group.js.map +1 -1
- package/dist/commands/login/remove-user-from-group.js +10 -2
- package/dist/commands/login/remove-user-from-group.js.map +1 -1
- package/dist/commands/login/update-config.js +12 -8
- package/dist/commands/login/update-config.js.map +1 -1
- package/dist/commands/project/create-project.d.ts +1 -0
- package/dist/commands/project/create-project.js +14 -1
- package/dist/commands/project/create-project.js.map +1 -1
- package/dist/commands/project/select-project.js +7 -1
- package/dist/commands/project/select-project.js.map +1 -1
- package/dist/commands/start.js +3 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/stop.js +8 -5
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/token/create-token.js +4 -3
- package/dist/commands/token/create-token.js.map +1 -1
- package/dist/commands/token/delete-token.js +2 -1
- package/dist/commands/token/delete-token.js.map +1 -1
- package/dist/commands/token/get-token.js +2 -1
- package/dist/commands/token/get-token.js.map +1 -1
- package/dist/commands/token/update-token.js +5 -4
- package/dist/commands/token/update-token.js.map +1 -1
- package/dist/commands/whoami.d.ts +9 -0
- package/dist/commands/whoami.js +37 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/common/base-command.d.ts +1 -0
- package/dist/common/base-command.js +4 -0
- package/dist/common/base-command.js.map +1 -1
- package/dist/common/constants.d.ts +4 -0
- package/dist/common/constants.js +6 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/helpers/degit.d.ts +1 -0
- package/dist/helpers/degit.js +26 -0
- package/dist/helpers/degit.js.map +1 -0
- package/dist/helpers/generate-error-message.d.ts +1 -0
- package/dist/helpers/generate-error-message.js +8 -0
- package/dist/helpers/generate-error-message.js.map +1 -0
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.js +3 -1
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/input-length-validation.d.ts +4 -0
- package/dist/helpers/input-length-validation.js +15 -0
- package/dist/helpers/input-length-validation.js.map +1 -0
- package/dist/helpers/prompt-required-flags.js +8 -1
- package/dist/helpers/prompt-required-flags.js.map +1 -1
- package/dist/services/affinidi/auth/index.js +7 -2
- package/dist/services/affinidi/auth/index.js.map +1 -1
- package/dist/services/affinidi/auth/token.d.ts +11 -7
- package/dist/services/affinidi/auth/token.js +25 -21
- package/dist/services/affinidi/auth/token.js.map +1 -1
- package/dist/services/affinidi/errors/index.d.ts +2 -0
- package/dist/services/affinidi/errors/index.js +6 -5
- package/dist/services/affinidi/errors/index.js.map +1 -1
- package/dist/services/affinidi/iam/iam.api.d.ts +8 -0
- package/dist/services/affinidi/iam/iam.api.js +1 -3
- package/dist/services/affinidi/iam/iam.api.js.map +1 -1
- package/dist/services/affinidi/iam/index.d.ts +1 -1
- package/dist/services/affinidi/iam/index.js +2 -2
- package/dist/services/affinidi/iam/index.js.map +1 -1
- package/dist/services/generator/auth0.d.ts +5 -0
- package/dist/services/generator/auth0.js +80 -0
- package/dist/services/generator/auth0.js.map +1 -0
- package/dist/services/generator/env-configurer.d.ts +1 -0
- package/dist/services/generator/env-configurer.js +22 -0
- package/dist/services/generator/env-configurer.js.map +1 -0
- package/dist/services/urls.d.ts +0 -1
- package/dist/services/urls.js +1 -4
- package/dist/services/urls.js.map +1 -1
- package/package.json +6 -6
- package/dist/services/auth0/index.d.ts +0 -7
- package/dist/services/auth0/index.js +0 -104
- package/dist/services/auth0/index.js.map +0 -1
|
@@ -3,6 +3,7 @@ export default class GenerateApp extends BaseCommand<typeof GenerateApp> {
|
|
|
3
3
|
static summary: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
+
sample: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
6
7
|
path: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
8
|
force: import("@oclif/core/lib/interfaces/parser").BooleanFlag<boolean>;
|
|
8
9
|
};
|
|
@@ -4,48 +4,99 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const password_1 = tslib_1.__importDefault(require("@inquirer/password"));
|
|
5
5
|
const prompts_1 = require("@inquirer/prompts");
|
|
6
6
|
const core_1 = require("@oclif/core");
|
|
7
|
-
const
|
|
7
|
+
const errors_1 = require("@oclif/core/lib/errors");
|
|
8
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
9
|
+
const zod_1 = tslib_1.__importDefault(require("zod"));
|
|
8
10
|
const common_1 = require("../../common");
|
|
9
11
|
const helpers_1 = require("../../helpers");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
12
|
+
const degit_1 = require("../../helpers/degit");
|
|
13
|
+
const generate_error_message_1 = require("../../helpers/generate-error-message");
|
|
14
|
+
const input_length_validation_1 = require("../../helpers/input-length-validation");
|
|
15
|
+
const affinidi_1 = require("../../services/affinidi");
|
|
16
|
+
const vp_adapter_1 = require("../../services/affinidi/vp-adapter");
|
|
17
|
+
const auth0_1 = require("../../services/generator/auth0");
|
|
18
|
+
const env_configurer_1 = require("../../services/generator/env-configurer");
|
|
19
|
+
const APPS_GITHUB_LOCATION = 'affinidi/reference-app-affinidi-vault/samples';
|
|
14
20
|
class GenerateApp extends common_1.BaseCommand {
|
|
15
21
|
async run() {
|
|
16
22
|
const { flags } = await this.parse(GenerateApp);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
core_1.ux.action.start('Cloning reference application');
|
|
20
|
-
// NOTE: using shelljs instead of child_process as shelljs handles errors better
|
|
21
|
-
const { code, stderr } = shelljs_1.default.exec(`npx degit ${GIT_URL} ${appPath} ${flags.force ? '--force' : ''}`);
|
|
22
|
-
if (code !== 0) {
|
|
23
|
-
core_1.ux.action.stop('Failed 🧨');
|
|
24
|
-
this.exit(1);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
core_1.ux.action.stop('Cloned successfully!');
|
|
23
|
+
if (flags['no-input'] && !flags.sample) {
|
|
24
|
+
throw new errors_1.CLIError((0, generate_error_message_1.giveFlagInputErrorMessage)('sample'));
|
|
28
25
|
}
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
const sample = flags.sample ??
|
|
27
|
+
(await (0, prompts_1.select)({
|
|
28
|
+
message: `Select the app to generate. ${chalk_1.default.italic('affinidi-*')} for basic Affinidi Login, ${chalk_1.default.italic('auth0-*')} for Affinidi Login through Auth0`,
|
|
29
|
+
choices: Object.values(common_1.RefAppSamples).map((value) => ({
|
|
30
|
+
name: value,
|
|
31
|
+
value,
|
|
32
|
+
})),
|
|
33
|
+
}));
|
|
34
|
+
const promptFlags = await (0, helpers_1.promptRequiredParameters)(['path'], flags);
|
|
35
|
+
promptFlags.sample = sample;
|
|
36
|
+
const schema = zod_1.default.object({
|
|
37
|
+
path: zod_1.default.string().max(input_length_validation_1.INPUT_LIMIT),
|
|
38
|
+
sample: zod_1.default.string().max(input_length_validation_1.INPUT_LIMIT),
|
|
33
39
|
});
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
const validatedFlags = schema.parse(promptFlags);
|
|
41
|
+
core_1.ux.action.start('Generating reference application');
|
|
42
|
+
await (0, degit_1.cloneWithDegit)(`${APPS_GITHUB_LOCATION}/${sample}`, validatedFlags.path, flags.force);
|
|
43
|
+
core_1.ux.action.stop('Generated successfully!');
|
|
44
|
+
if (!flags['no-input']) {
|
|
45
|
+
const configure = await (0, prompts_1.confirm)({
|
|
46
|
+
message: 'Automatically configure reference app environment?',
|
|
47
|
+
});
|
|
48
|
+
if (configure) {
|
|
49
|
+
core_1.ux.action.start('Fetching available login configurations');
|
|
50
|
+
const configs = await vp_adapter_1.vpAdapterService.listLoginConfigurations(affinidi_1.clientSDK.config.getProjectToken()?.projectAccessToken);
|
|
51
|
+
core_1.ux.action.stop('Fetched successfully!');
|
|
52
|
+
const choices = configs.configurations.map((config) => ({
|
|
53
|
+
value: {
|
|
54
|
+
id: config.id,
|
|
55
|
+
auth: config.auth,
|
|
56
|
+
},
|
|
57
|
+
name: `${config.name} [id: ${config.id}]`,
|
|
58
|
+
}));
|
|
59
|
+
const selectedConfig = await (0, prompts_1.select)({
|
|
60
|
+
message: 'Select a login configuration to use in your reference application',
|
|
61
|
+
choices,
|
|
62
|
+
});
|
|
63
|
+
const clientSecret = (0, input_length_validation_1.validateInputLength)(await (0, password_1.default)({
|
|
64
|
+
message: "What is the login configuration's client secret?",
|
|
65
|
+
mask: true,
|
|
66
|
+
}), input_length_validation_1.INPUT_LIMIT);
|
|
67
|
+
if (sample === common_1.RefAppSamples.AFFINIDI_NEXTJS_NEXTAUTHJS) {
|
|
68
|
+
core_1.ux.action.start('Configuring reference application');
|
|
69
|
+
await (0, env_configurer_1.configureAppEnvironment)(validatedFlags.path, selectedConfig.auth.clientId, clientSecret, selectedConfig.auth.issuer);
|
|
70
|
+
core_1.ux.action.stop('Configured successfully!');
|
|
71
|
+
}
|
|
72
|
+
else if (sample === common_1.RefAppSamples.AUTH0_NEXTJS_NEXTAUTHJS) {
|
|
73
|
+
const domain = (0, input_length_validation_1.validateInputLength)(await (0, prompts_1.input)({ message: 'What is your Auth0 tenant URL?' }), input_length_validation_1.INPUT_LIMIT);
|
|
74
|
+
const accessToken = (0, input_length_validation_1.validateInputLength)(await (0, password_1.default)({ message: 'What is your Auth0 access token?' }), input_length_validation_1.TOKEN_LIMIT);
|
|
75
|
+
core_1.ux.action.start('Creating Auth0 resources and configuring reference application');
|
|
76
|
+
const { auth0ClientId, auth0ClientSecret, connectionName } = await (0, auth0_1.createAuth0Resources)(accessToken, domain, selectedConfig.auth.clientId, clientSecret, selectedConfig.auth.issuer);
|
|
77
|
+
await (0, env_configurer_1.configureAppEnvironment)(validatedFlags.path, auth0ClientId, auth0ClientSecret, domain, connectionName);
|
|
78
|
+
core_1.ux.action.stop('Configured successfully!');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
this.log('Please read the generated README for instructions on how to run your reference application');
|
|
39
83
|
}
|
|
40
84
|
}
|
|
41
85
|
exports.default = GenerateApp;
|
|
42
|
-
GenerateApp.summary = '
|
|
86
|
+
GenerateApp.summary = 'Generates a NextJS reference application that integrates Affinidi Login. Requires git';
|
|
43
87
|
GenerateApp.examples = [
|
|
44
88
|
'<%= config.bin %> <%= command.id %>',
|
|
45
|
-
'<%= config.bin %> <%= command.id %> -p
|
|
46
|
-
'<%= config.bin %> <%= command.id %> --path
|
|
89
|
+
'<%= config.bin %> <%= command.id %> -p "../my-app" -s affinidi-nextjs-nextauthjs',
|
|
90
|
+
'<%= config.bin %> <%= command.id %> --path "../my-app" --sample auth0-nextjs-nextauthjs --force',
|
|
47
91
|
];
|
|
48
92
|
GenerateApp.flags = {
|
|
93
|
+
sample: core_1.Flags.string({
|
|
94
|
+
char: 's',
|
|
95
|
+
summary: 'Sample to generate',
|
|
96
|
+
description: `Use ${chalk_1.default.italic('affinidi-nextjs-nextauthjs')} to generate a Next.js+NextAuth.js app that integrates Affinidi Login directly\n\
|
|
97
|
+
Use ${chalk_1.default.italic('auth0-nextjs-nextauthjs')} to generate a Next.js+NextAuth.js app that integrates Affinidi Login through Auth0`,
|
|
98
|
+
options: Object.values(common_1.RefAppSamples),
|
|
99
|
+
}),
|
|
49
100
|
path: core_1.Flags.string({
|
|
50
101
|
char: 'p',
|
|
51
102
|
summary: 'Relative or absolute path where reference application should be cloned into',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":";;;AAAA,0EAAyC;AACzC,+
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export declare class AddPrincipal extends BaseCommand<typeof AddPrincipal> {
|
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
7
|
'principal-id': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
-
'principal-type': import("@oclif/core/lib/interfaces/parser").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
'principal-type': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
9
|
};
|
|
10
10
|
run(): Promise<void>;
|
|
11
11
|
}
|
|
@@ -2,25 +2,42 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AddPrincipal = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
5
6
|
const core_1 = require("@oclif/core");
|
|
7
|
+
const errors_1 = require("@oclif/core/lib/errors");
|
|
6
8
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
7
9
|
const zod_1 = require("zod");
|
|
8
10
|
const common_1 = require("../../common");
|
|
9
11
|
const helpers_1 = require("../../helpers");
|
|
12
|
+
const generate_error_message_1 = require("../../helpers/generate-error-message");
|
|
13
|
+
const input_length_validation_1 = require("../../helpers/input-length-validation");
|
|
10
14
|
const affinidi_1 = require("../../services/affinidi");
|
|
11
15
|
const iam_1 = require("../../services/affinidi/iam");
|
|
12
16
|
class AddPrincipal extends common_1.BaseCommand {
|
|
13
17
|
async run() {
|
|
14
18
|
const { flags } = await this.parse(AddPrincipal);
|
|
15
19
|
const promptFlags = await (0, helpers_1.promptRequiredParameters)(['principal-id'], flags);
|
|
20
|
+
if (flags['no-input']) {
|
|
21
|
+
if (!promptFlags['principal-type']) {
|
|
22
|
+
throw new errors_1.CLIError((0, generate_error_message_1.giveFlagInputErrorMessage)('principal-type'));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
promptFlags['principal-type'] ?? (promptFlags['principal-type'] = await (0, prompts_1.select)({
|
|
26
|
+
message: 'Select the principal-type',
|
|
27
|
+
choices: Object.values(common_1.PrincipalTypes).map((value) => ({
|
|
28
|
+
name: value,
|
|
29
|
+
value,
|
|
30
|
+
})),
|
|
31
|
+
}));
|
|
16
32
|
const schema = zod_1.z.object({
|
|
17
|
-
'principal-id': zod_1.z.string().uuid(),
|
|
33
|
+
'principal-id': zod_1.z.string().max(input_length_validation_1.INPUT_LIMIT).uuid(),
|
|
18
34
|
'principal-type': zod_1.z.nativeEnum(common_1.PrincipalTypes),
|
|
19
35
|
});
|
|
20
36
|
const validatedFlags = schema.parse(promptFlags);
|
|
21
37
|
core_1.ux.action.start('Adding principal to project');
|
|
22
38
|
await iam_1.iamService.addPrincipalToProject(affinidi_1.clientSDK.config.getProjectToken()?.projectAccessToken, {
|
|
23
|
-
principalId:
|
|
39
|
+
principalId: validatedFlags['principal-id'],
|
|
40
|
+
principalType: validatedFlags['principal-type'],
|
|
24
41
|
});
|
|
25
42
|
core_1.ux.action.stop('Added successfully!');
|
|
26
43
|
}
|
|
@@ -42,7 +59,6 @@ AddPrincipal.flags = {
|
|
|
42
59
|
char: 't',
|
|
43
60
|
summary: 'Type of the principal',
|
|
44
61
|
options: Object.values(common_1.PrincipalTypes),
|
|
45
|
-
default: common_1.PrincipalTypes.TOKEN,
|
|
46
62
|
}),
|
|
47
63
|
};
|
|
48
64
|
//# sourceMappingURL=add-principal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-principal.js","sourceRoot":"","sources":["../../../src/commands/iam/add-principal.ts"],"names":[],"mappings":";;;;AAAA,sCAAuC;AACvC,0DAAyB;AACzB,6BAAuB;AACvB,yCAA0D;AAC1D,2CAAwD;AACxD,sDAAmD;AACnD,qDAAwD;AAExD,MAAa,YAAa,SAAQ,oBAAgC;
|
|
1
|
+
{"version":3,"file":"add-principal.js","sourceRoot":"","sources":["../../../src/commands/iam/add-principal.ts"],"names":[],"mappings":";;;;AAAA,+CAA0C;AAC1C,sCAAuC;AACvC,mDAAiD;AACjD,0DAAyB;AACzB,6BAAuB;AACvB,yCAA0D;AAC1D,2CAAwD;AACxD,iFAAgF;AAChF,mFAAmE;AACnE,sDAAmD;AACnD,qDAAwD;AAExD,MAAa,YAAa,SAAQ,oBAAgC;IAoBzD,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAChD,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAwB,EAAC,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAA;QAE3E,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE;gBAClC,MAAM,IAAI,iBAAQ,CAAC,IAAA,kDAAyB,EAAC,gBAAgB,CAAC,CAAC,CAAA;aAChE;SACF;QACD,WAAW,CAAC,gBAAgB,MAA5B,WAAW,CAAC,gBAAgB,IAAM,MAAM,IAAA,gBAAM,EAAC;YAC7C,OAAO,EAAE,2BAA2B;YACpC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAc,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACrD,IAAI,EAAE,KAAK;gBACX,KAAK;aACN,CAAC,CAAC;SACJ,CAAC,EAAA;QACF,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC;YACtB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,qCAAW,CAAC,CAAC,IAAI,EAAE;YAClD,gBAAgB,EAAE,OAAC,CAAC,UAAU,CAAC,uBAAc,CAAC;SAC/C,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAEhD,SAAE,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC9C,MAAM,gBAAU,CAAC,qBAAqB,CAAC,oBAAS,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,kBAAkB,EAAE;YAC7F,WAAW,EAAE,cAAc,CAAC,cAAc,CAAC;YAC3C,aAAa,EAAE,cAAc,CAAC,gBAAgB,CAAC;SAChD,CAAC,CAAA;QACF,SAAE,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACvC,CAAC;;AAhDH,oCAiDC;AAhDQ,oBAAO,GAAG,wDAAwD,CAAA;AAClE,wBAAW,GAAG,8CAA8C,eAAK,CAAC,OAAO,CAAC,iCAAiC,CAAC,EAAE,CAAA;AAC9G,qBAAQ,GAAG;IAChB,+CAA+C;IAC/C,yFAAyF;CAC1F,CAAA;AACM,kBAAK,GAAG;IACb,cAAc,EAAE,YAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,2CAA2C,eAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE;KACtG,CAAC;IACF,gBAAgB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC7B,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAc,CAAC;KACvC,CAAC;CACH,CAAA"}
|
|
@@ -6,7 +6,7 @@ export declare class GetPolicies extends BaseCommand<typeof GetPolicies> {
|
|
|
6
6
|
static examples: string[];
|
|
7
7
|
static flags: {
|
|
8
8
|
'principal-id': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
-
'principal-type': import("@oclif/core/lib/interfaces/parser").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
'principal-type': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
10
|
};
|
|
11
11
|
run(): Promise<PolicyDto>;
|
|
12
12
|
}
|
|
@@ -2,19 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GetPolicies = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
5
6
|
const core_1 = require("@oclif/core");
|
|
7
|
+
const errors_1 = require("@oclif/core/lib/errors");
|
|
6
8
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
7
9
|
const zod_1 = require("zod");
|
|
8
10
|
const common_1 = require("../../common");
|
|
9
11
|
const helpers_1 = require("../../helpers");
|
|
12
|
+
const generate_error_message_1 = require("../../helpers/generate-error-message");
|
|
13
|
+
const input_length_validation_1 = require("../../helpers/input-length-validation");
|
|
10
14
|
const affinidi_1 = require("../../services/affinidi");
|
|
11
15
|
const iam_1 = require("../../services/affinidi/iam");
|
|
12
16
|
class GetPolicies extends common_1.BaseCommand {
|
|
13
17
|
async run() {
|
|
14
18
|
const { flags } = await this.parse(GetPolicies);
|
|
15
19
|
const promptFlags = await (0, helpers_1.promptRequiredParameters)(['principal-id'], flags);
|
|
20
|
+
if (flags['no-input']) {
|
|
21
|
+
if (!promptFlags['principal-type']) {
|
|
22
|
+
throw new errors_1.CLIError((0, generate_error_message_1.giveFlagInputErrorMessage)('principal-type'));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
promptFlags['principal-type'] ?? (promptFlags['principal-type'] = await (0, prompts_1.select)({
|
|
26
|
+
message: 'Select the principal-type',
|
|
27
|
+
choices: Object.values(common_1.PrincipalTypes).map((value) => ({
|
|
28
|
+
name: value,
|
|
29
|
+
value,
|
|
30
|
+
})),
|
|
31
|
+
}));
|
|
16
32
|
const schema = zod_1.z.object({
|
|
17
|
-
'principal-id': zod_1.z.string().uuid(),
|
|
33
|
+
'principal-id': zod_1.z.string().max(input_length_validation_1.INPUT_LIMIT).uuid(),
|
|
18
34
|
'principal-type': zod_1.z.nativeEnum(common_1.PrincipalTypes),
|
|
19
35
|
});
|
|
20
36
|
const validatedFlags = schema.parse(promptFlags);
|
|
@@ -44,7 +60,6 @@ GetPolicies.flags = {
|
|
|
44
60
|
char: 't',
|
|
45
61
|
summary: 'Type of the principal',
|
|
46
62
|
options: Object.values(common_1.PrincipalTypes),
|
|
47
|
-
default: common_1.PrincipalTypes.TOKEN,
|
|
48
63
|
}),
|
|
49
64
|
};
|
|
50
65
|
//# sourceMappingURL=get-policies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-policies.js","sourceRoot":"","sources":["../../../src/commands/iam/get-policies.ts"],"names":[],"mappings":";;;;AAAA,sCAAuC;AACvC,0DAAyB;AACzB,6BAAuB;AACvB,yCAA0D;AAC1D,2CAAwD;AACxD,sDAAmD;AACnD,qDAAwD;AAGxD,MAAa,WAAY,SAAQ,oBAA+B;
|
|
1
|
+
{"version":3,"file":"get-policies.js","sourceRoot":"","sources":["../../../src/commands/iam/get-policies.ts"],"names":[],"mappings":";;;;AAAA,+CAA0C;AAC1C,sCAAuC;AACvC,mDAAiD;AACjD,0DAAyB;AACzB,6BAAuB;AACvB,yCAA0D;AAC1D,2CAAwD;AACxD,iFAAgF;AAChF,mFAAmE;AACnE,sDAAmD;AACnD,qDAAwD;AAGxD,MAAa,WAAY,SAAQ,oBAA+B;IAqBvD,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAwB,EAAC,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAA;QAC3E,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE;gBAClC,MAAM,IAAI,iBAAQ,CAAC,IAAA,kDAAyB,EAAC,gBAAgB,CAAC,CAAC,CAAA;aAChE;SACF;QACD,WAAW,CAAC,gBAAgB,MAA5B,WAAW,CAAC,gBAAgB,IAAM,MAAM,IAAA,gBAAM,EAAC;YAC7C,OAAO,EAAE,2BAA2B;YACpC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAc,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACrD,IAAI,EAAE,KAAK;gBACX,KAAK;aACN,CAAC,CAAC;SACJ,CAAC,EAAA;QACF,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC;YACtB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,qCAAW,CAAC,CAAC,IAAI,EAAE;YAClD,gBAAgB,EAAE,OAAC,CAAC,UAAU,CAAC,uBAAc,CAAC;SAC/C,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAEhD,SAAE,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,gBAAU,CAAC,WAAW,CACtC,oBAAS,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,kBAAkB,EACtD,cAAc,CAAC,cAAc,CAAC,EAC9B,cAAc,CAAC,gBAAgB,CAAC,CACjC,CAAA;QACD,SAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAEvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC1C,OAAO,GAAG,CAAA;IACZ,CAAC;;AApDH,kCAqDC;AApDQ,mBAAO,GAAG,kDAAkD,CAAA;AAC5D,uBAAW,GAAG;kBACL,eAAK,CAAC,OAAO,CAAC,iCAAiC,CAAC,gCAAgC,CAAA;AACzF,oBAAQ,GAAG;IAChB,+CAA+C;IAC/C,yFAAyF;CAC1F,CAAA;AACM,iBAAK,GAAG;IACb,cAAc,EAAE,YAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,2CAA2C,eAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE;KACtG,CAAC;IACF,gBAAgB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC7B,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAc,CAAC;KACvC,CAAC;CACH,CAAA"}
|
|
@@ -5,7 +5,7 @@ export declare class RemovePrincipal extends BaseCommand<typeof RemovePrincipal>
|
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
7
|
'principal-id': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
-
'principal-type': import("@oclif/core/lib/interfaces/parser").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
'principal-type': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
9
|
};
|
|
10
10
|
run(): Promise<{
|
|
11
11
|
'principal-id': string;
|
|
@@ -2,19 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RemovePrincipal = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
5
6
|
const core_1 = require("@oclif/core");
|
|
7
|
+
const errors_1 = require("@oclif/core/lib/errors");
|
|
6
8
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
7
9
|
const zod_1 = require("zod");
|
|
8
10
|
const common_1 = require("../../common");
|
|
9
11
|
const helpers_1 = require("../../helpers");
|
|
12
|
+
const generate_error_message_1 = require("../../helpers/generate-error-message");
|
|
13
|
+
const input_length_validation_1 = require("../../helpers/input-length-validation");
|
|
10
14
|
const affinidi_1 = require("../../services/affinidi");
|
|
11
15
|
const iam_1 = require("../../services/affinidi/iam");
|
|
12
16
|
class RemovePrincipal extends common_1.BaseCommand {
|
|
13
17
|
async run() {
|
|
14
18
|
const { flags } = await this.parse(RemovePrincipal);
|
|
15
19
|
const promptFlags = await (0, helpers_1.promptRequiredParameters)(['principal-id'], flags);
|
|
20
|
+
if (flags['no-input']) {
|
|
21
|
+
if (!promptFlags['principal-type']) {
|
|
22
|
+
throw new errors_1.CLIError((0, generate_error_message_1.giveFlagInputErrorMessage)('principal-type'));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
promptFlags['principal-type'] ?? (promptFlags['principal-type'] = await (0, prompts_1.select)({
|
|
26
|
+
message: 'Select the principal-type',
|
|
27
|
+
choices: Object.values(common_1.PrincipalTypes).map((value) => ({
|
|
28
|
+
name: value,
|
|
29
|
+
value,
|
|
30
|
+
})),
|
|
31
|
+
}));
|
|
16
32
|
const schema = zod_1.z.object({
|
|
17
|
-
'principal-id': zod_1.z.string().uuid(),
|
|
33
|
+
'principal-id': zod_1.z.string().max(input_length_validation_1.INPUT_LIMIT).uuid(),
|
|
18
34
|
'principal-type': zod_1.z.nativeEnum(common_1.PrincipalTypes),
|
|
19
35
|
});
|
|
20
36
|
const validatedFlags = schema.parse(promptFlags);
|
|
@@ -43,7 +59,6 @@ RemovePrincipal.flags = {
|
|
|
43
59
|
char: 't',
|
|
44
60
|
summary: 'Type of the principal',
|
|
45
61
|
options: Object.values(common_1.PrincipalTypes),
|
|
46
|
-
default: common_1.PrincipalTypes.TOKEN,
|
|
47
62
|
}),
|
|
48
63
|
};
|
|
49
64
|
//# sourceMappingURL=remove-principal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-principal.js","sourceRoot":"","sources":["../../../src/commands/iam/remove-principal.ts"],"names":[],"mappings":";;;;AAAA,sCAAuC;AACvC,0DAAyB;AACzB,6BAAuB;AACvB,yCAA0D;AAC1D,2CAAwD;AACxD,sDAAmD;AACnD,qDAAwD;AAExD,MAAa,eAAgB,SAAQ,oBAAmC;
|
|
1
|
+
{"version":3,"file":"remove-principal.js","sourceRoot":"","sources":["../../../src/commands/iam/remove-principal.ts"],"names":[],"mappings":";;;;AAAA,+CAA0C;AAC1C,sCAAuC;AACvC,mDAAiD;AACjD,0DAAyB;AACzB,6BAAuB;AACvB,yCAA0D;AAC1D,2CAAwD;AACxD,iFAAgF;AAChF,mFAAmE;AACnE,sDAAmD;AACnD,qDAAwD;AAExD,MAAa,eAAgB,SAAQ,oBAAmC;IAoB/D,KAAK,CAAC,GAAG;QAId,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QACnD,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAwB,EAAC,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAA;QAC3E,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE;gBAClC,MAAM,IAAI,iBAAQ,CAAC,IAAA,kDAAyB,EAAC,gBAAgB,CAAC,CAAC,CAAA;aAChE;SACF;QACD,WAAW,CAAC,gBAAgB,MAA5B,WAAW,CAAC,gBAAgB,IAAM,MAAM,IAAA,gBAAM,EAAC;YAC7C,OAAO,EAAE,2BAA2B;YACpC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAc,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACrD,IAAI,EAAE,KAAK;gBACX,KAAK;aACN,CAAC,CAAC;SACJ,CAAC,EAAA;QACF,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC;YACtB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,qCAAW,CAAC,CAAC,IAAI,EAAE;YAClD,gBAAgB,EAAE,OAAC,CAAC,UAAU,CAAC,uBAAc,CAAC;SAC/C,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAEhD,SAAE,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;QAClD,MAAM,gBAAU,CAAC,0BAA0B,CACzC,oBAAS,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,kBAAkB,EACtD,cAAc,CAAC,cAAc,CAAC,EAC9B,cAAc,CAAC,gBAAgB,CAAC,CACjC,CAAA;QACD,SAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAEvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACrD,OAAO,cAAc,CAAA;IACvB,CAAC;;AAtDH,0CAuDC;AAtDQ,uBAAO,GAAG,6DAA6D,CAAA;AACvE,2BAAW,GAAG,8CAA8C,eAAK,CAAC,OAAO,CAAC,iCAAiC,CAAC,EAAE,CAAA;AAC9G,wBAAQ,GAAG;IAChB,+CAA+C;IAC/C,yFAAyF;CAC1F,CAAA;AACM,qBAAK,GAAG;IACb,cAAc,EAAE,YAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,2CAA2C,eAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE;KACtG,CAAC;IACF,gBAAgB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC7B,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAc,CAAC;KACvC,CAAC;CACH,CAAA"}
|
|
@@ -6,7 +6,7 @@ export declare class UpdatePolicies extends BaseCommand<typeof UpdatePolicies> {
|
|
|
6
6
|
static examples: string[];
|
|
7
7
|
static flags: {
|
|
8
8
|
'principal-id': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
-
'principal-type': import("@oclif/core/lib/interfaces/parser").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
'principal-type': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
10
|
file: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
11
|
};
|
|
12
12
|
run(): Promise<PolicyDto>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UpdatePolicies = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const
|
|
5
|
+
const promises_1 = require("fs/promises");
|
|
6
6
|
const prompts_1 = require("@inquirer/prompts");
|
|
7
7
|
const core_1 = require("@oclif/core");
|
|
8
8
|
const errors_1 = require("@oclif/core/lib/errors");
|
|
@@ -10,25 +10,39 @@ const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
|
10
10
|
const zod_1 = require("zod");
|
|
11
11
|
const common_1 = require("../../common");
|
|
12
12
|
const helpers_1 = require("../../helpers");
|
|
13
|
+
const generate_error_message_1 = require("../../helpers/generate-error-message");
|
|
14
|
+
const input_length_validation_1 = require("../../helpers/input-length-validation");
|
|
13
15
|
const affinidi_1 = require("../../services/affinidi");
|
|
14
16
|
const iam_1 = require("../../services/affinidi/iam");
|
|
15
17
|
class UpdatePolicies extends common_1.BaseCommand {
|
|
16
18
|
async run() {
|
|
17
19
|
const { flags } = await this.parse(UpdatePolicies);
|
|
18
20
|
const promptFlags = await (0, helpers_1.promptRequiredParameters)(['principal-id'], flags);
|
|
21
|
+
if (flags['no-input']) {
|
|
22
|
+
if (!promptFlags['principal-type']) {
|
|
23
|
+
throw new errors_1.CLIError((0, generate_error_message_1.giveFlagInputErrorMessage)('principal-type'));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
promptFlags['principal-type'] ?? (promptFlags['principal-type'] = await (0, prompts_1.select)({
|
|
27
|
+
message: 'Select the principal-type',
|
|
28
|
+
choices: Object.values(common_1.PrincipalTypes).map((value) => ({
|
|
29
|
+
name: value,
|
|
30
|
+
value,
|
|
31
|
+
})),
|
|
32
|
+
}));
|
|
19
33
|
const flagsSchema = zod_1.z.object({
|
|
20
|
-
'principal-id': zod_1.z.string().uuid(),
|
|
34
|
+
'principal-id': zod_1.z.string().max(input_length_validation_1.INPUT_LIMIT).uuid(),
|
|
21
35
|
'principal-type': zod_1.z.nativeEnum(common_1.PrincipalTypes),
|
|
22
36
|
file: zod_1.z.string().optional(),
|
|
23
37
|
});
|
|
24
38
|
const validatedFlags = flagsSchema.parse(promptFlags);
|
|
25
39
|
const policiesDataSchema = zod_1.z.object({
|
|
26
|
-
version: zod_1.z.string(),
|
|
40
|
+
version: zod_1.z.string().max(input_length_validation_1.INPUT_LIMIT),
|
|
27
41
|
statement: zod_1.z
|
|
28
42
|
.object({
|
|
29
|
-
principal: zod_1.z.string().array().length(1),
|
|
30
|
-
action: zod_1.z.string().array().nonempty(),
|
|
31
|
-
resource: zod_1.z.string().array().nonempty(),
|
|
43
|
+
principal: zod_1.z.string().max(input_length_validation_1.INPUT_LIMIT).array().length(1),
|
|
44
|
+
action: zod_1.z.string().max(input_length_validation_1.INPUT_LIMIT).array().nonempty(),
|
|
45
|
+
resource: zod_1.z.string().max(input_length_validation_1.INPUT_LIMIT).array().nonempty(),
|
|
32
46
|
effect: zod_1.z.literal('Allow'),
|
|
33
47
|
})
|
|
34
48
|
.array()
|
|
@@ -36,7 +50,7 @@ class UpdatePolicies extends common_1.BaseCommand {
|
|
|
36
50
|
});
|
|
37
51
|
let policiesData = null;
|
|
38
52
|
if (validatedFlags.file) {
|
|
39
|
-
const rawData = (0,
|
|
53
|
+
const rawData = await (0, promises_1.readFile)(validatedFlags.file, 'utf8');
|
|
40
54
|
try {
|
|
41
55
|
policiesData = JSON.parse(rawData);
|
|
42
56
|
}
|
|
@@ -45,10 +59,13 @@ class UpdatePolicies extends common_1.BaseCommand {
|
|
|
45
59
|
}
|
|
46
60
|
}
|
|
47
61
|
else {
|
|
62
|
+
if (flags['no-input']) {
|
|
63
|
+
throw new errors_1.CLIError((0, generate_error_message_1.giveFlagInputErrorMessage)('file'));
|
|
64
|
+
}
|
|
48
65
|
this.log(`Assigning a single policy statement to a principal. To assign multiple statements please use the ${chalk_1.default.inverse('--file')} flag instead.`);
|
|
49
66
|
this.warn('\nThis will override the existing principal statements');
|
|
50
|
-
const resourceFilters = await (0, prompts_1.input)({ message: 'Enter the resource filters, separated by space' });
|
|
51
|
-
const actions = await (0, prompts_1.input)({ message: 'Enter the allowed actions, separated by space' });
|
|
67
|
+
const resourceFilters = (0, input_length_validation_1.validateInputLength)(await (0, prompts_1.input)({ message: 'Enter the resource filters, separated by space' }), input_length_validation_1.INPUT_LIMIT);
|
|
68
|
+
const actions = (0, input_length_validation_1.validateInputLength)(await (0, prompts_1.input)({ message: 'Enter the allowed actions, separated by space' }), input_length_validation_1.INPUT_LIMIT);
|
|
52
69
|
policiesData = {
|
|
53
70
|
version: '2022-12-15',
|
|
54
71
|
statement: [
|
|
@@ -66,11 +83,13 @@ class UpdatePolicies extends common_1.BaseCommand {
|
|
|
66
83
|
const validatedPolicies = policiesDataSchema.parse(policiesData);
|
|
67
84
|
this.log(`The following policies will be updated for principal ${chalk_1.default.inverse(validatedFlags['principal-id'])}:`);
|
|
68
85
|
this.logJson(validatedPolicies);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
86
|
+
if (!flags['no-input']) {
|
|
87
|
+
const confirmPolicies = await (0, prompts_1.confirm)({
|
|
88
|
+
message: 'Update policies?',
|
|
89
|
+
});
|
|
90
|
+
if (!confirmPolicies) {
|
|
91
|
+
throw new errors_1.CLIError('Action canceled');
|
|
92
|
+
}
|
|
74
93
|
}
|
|
75
94
|
core_1.ux.action.start('Updating principal policies');
|
|
76
95
|
const out = await iam_1.iamService.updatePolicies(affinidi_1.clientSDK.config.getProjectToken()?.projectAccessToken, validatedFlags['principal-id'], validatedFlags['principal-type'], validatedPolicies);
|
|
@@ -98,7 +117,6 @@ UpdatePolicies.flags = {
|
|
|
98
117
|
char: 't',
|
|
99
118
|
summary: 'Type of the principal',
|
|
100
119
|
options: Object.values(common_1.PrincipalTypes),
|
|
101
|
-
default: common_1.PrincipalTypes.TOKEN,
|
|
102
120
|
}),
|
|
103
121
|
file: core_1.Flags.string({
|
|
104
122
|
char: 'f',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-policies.js","sourceRoot":"","sources":["../../../src/commands/iam/update-policies.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"update-policies.js","sourceRoot":"","sources":["../../../src/commands/iam/update-policies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AddUserToGroup = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
4
5
|
const core_1 = require("@oclif/core");
|
|
6
|
+
const zod_1 = tslib_1.__importDefault(require("zod"));
|
|
5
7
|
const common_1 = require("../../common");
|
|
6
8
|
const helpers_1 = require("../../helpers");
|
|
9
|
+
const input_length_validation_1 = require("../../helpers/input-length-validation");
|
|
7
10
|
const affinidi_1 = require("../../services/affinidi");
|
|
8
11
|
const vp_adapter_1 = require("../../services/affinidi/vp-adapter");
|
|
9
12
|
class AddUserToGroup extends common_1.BaseCommand {
|
|
10
13
|
async run() {
|
|
11
14
|
const { flags } = await this.parse(AddUserToGroup);
|
|
12
15
|
const promptFlags = await (0, helpers_1.promptRequiredParameters)(['group-name', 'user-sub'], flags);
|
|
16
|
+
const schema = zod_1.default.object({
|
|
17
|
+
'group-name': zod_1.default.string().max(input_length_validation_1.INPUT_LIMIT),
|
|
18
|
+
'user-sub': zod_1.default.string().max(input_length_validation_1.INPUT_LIMIT),
|
|
19
|
+
});
|
|
20
|
+
const validatedFlags = schema.parse(promptFlags);
|
|
13
21
|
core_1.ux.action.start('Adding user to group');
|
|
14
|
-
const addUserToGroupOutput = await vp_adapter_1.vpAdapterService.addUserToGroup(affinidi_1.clientSDK.config.getProjectToken()?.projectAccessToken,
|
|
22
|
+
const addUserToGroupOutput = await vp_adapter_1.vpAdapterService.addUserToGroup(affinidi_1.clientSDK.config.getProjectToken()?.projectAccessToken, validatedFlags['group-name'], validatedFlags['user-sub']);
|
|
15
23
|
core_1.ux.action.stop('Added successfully!');
|
|
16
24
|
if (!this.jsonEnabled())
|
|
17
25
|
this.logJson(addUserToGroupOutput);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-user-to-group.js","sourceRoot":"","sources":["../../../src/commands/login/add-user-to-group.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add-user-to-group.js","sourceRoot":"","sources":["../../../src/commands/login/add-user-to-group.ts"],"names":[],"mappings":";;;;AAAA,sCAAuC;AACvC,sDAAmB;AACnB,yCAA0C;AAC1C,2CAAwD;AACxD,mFAAmE;AACnE,sDAAmD;AACnD,mEAAqE;AAGrE,MAAa,cAAe,SAAQ,oBAAkC;IAY7D,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QAClD,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAwB,EAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAA;QACrF,MAAM,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC;YACtB,YAAY,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,qCAAW,CAAC;YACzC,UAAU,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,qCAAW,CAAC;SACxC,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAEhD,SAAE,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACvC,MAAM,oBAAoB,GAAG,MAAM,6BAAgB,CAAC,cAAc,CAChE,oBAAS,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,kBAAkB,EACtD,cAAc,CAAC,YAAY,CAAC,EAC5B,cAAc,CAAC,UAAU,CAAC,CAC3B,CAAA;QACD,SAAE,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAErC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;QAC3D,OAAO,oBAAoB,CAAA;IAC7B,CAAC;;AA/BH,wCAgCC;AA/BQ,sBAAO,GAAG,6BAA6B,CAAA;AACvC,uBAAQ,GAAG,CAAC,oFAAoF,CAAC,CAAA;AACjG,oBAAK,GAAG;IACb,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,OAAO,EAAE,wBAAwB;KAClC,CAAC;IACF,UAAU,EAAE,YAAK,CAAC,MAAM,CAAC;QACvB,OAAO,EAAE,6DAA6D;KACvE,CAAC;CACH,CAAA"}
|