@affinidi/cli 2.5.0 → 2.6.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/dist/commands/iam/update-policies.js +9 -15
- package/dist/commands/iam/update-policies.js.map +1 -1
- package/dist/commands/token/create-token.d.ts +2 -2
- package/dist/commands/token/create-token.js +167 -99
- package/dist/commands/token/create-token.js.map +1 -1
- package/dist/common/validators.d.ts +46 -0
- package/dist/common/validators.js +15 -1
- package/dist/common/validators.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,18 +36,6 @@ class UpdatePolicies extends common_1.BaseCommand {
|
|
|
36
36
|
file: zod_1.z.string().optional(),
|
|
37
37
|
});
|
|
38
38
|
const validatedFlags = flagsSchema.parse(promptFlags);
|
|
39
|
-
const policiesDataSchema = zod_1.z.object({
|
|
40
|
-
version: zod_1.z.string().max(validators_1.INPUT_LIMIT),
|
|
41
|
-
statement: zod_1.z
|
|
42
|
-
.object({
|
|
43
|
-
principal: zod_1.z.string().max(validators_1.INPUT_LIMIT).array().length(1),
|
|
44
|
-
action: zod_1.z.string().max(validators_1.INPUT_LIMIT).array().nonempty(),
|
|
45
|
-
resource: zod_1.z.string().max(validators_1.INPUT_LIMIT).array().nonempty(),
|
|
46
|
-
effect: zod_1.z.literal('Allow'),
|
|
47
|
-
})
|
|
48
|
-
.array()
|
|
49
|
-
.nonempty(),
|
|
50
|
-
});
|
|
51
39
|
let policiesData = null;
|
|
52
40
|
if (validatedFlags.file) {
|
|
53
41
|
const rawData = await (0, promises_1.readFile)(validatedFlags.file, 'utf8');
|
|
@@ -64,8 +52,14 @@ class UpdatePolicies extends common_1.BaseCommand {
|
|
|
64
52
|
}
|
|
65
53
|
this.log(`Assigning a single policy statement to a principal. To assign multiple statements please use the ${chalk_1.default.inverse('--file')} flag instead.`);
|
|
66
54
|
this.warn('\nThis will override the existing principal statements');
|
|
67
|
-
const resourceFilters = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
68
|
-
|
|
55
|
+
const resourceFilters = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
56
|
+
message: 'Enter the allowed resources, separated by spaces. Use * to allow access to all project resources',
|
|
57
|
+
default: '*',
|
|
58
|
+
}), validators_1.INPUT_LIMIT);
|
|
59
|
+
const actions = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
60
|
+
message: 'Enter the allowed actions, separated by spaces. Use * to allow all actions',
|
|
61
|
+
default: '*',
|
|
62
|
+
}), validators_1.INPUT_LIMIT);
|
|
69
63
|
const activeProject = await bff_service_1.bffService.getActiveProject();
|
|
70
64
|
policiesData = {
|
|
71
65
|
version: '2022-12-15',
|
|
@@ -81,7 +75,7 @@ class UpdatePolicies extends common_1.BaseCommand {
|
|
|
81
75
|
],
|
|
82
76
|
};
|
|
83
77
|
}
|
|
84
|
-
const validatedPolicies = policiesDataSchema.parse(policiesData);
|
|
78
|
+
const validatedPolicies = validators_1.policiesDataSchema.parse(policiesData);
|
|
85
79
|
this.log(`The following policies will be updated for principal ${chalk_1.default.inverse(validatedFlags['principal-id'])}:`);
|
|
86
80
|
this.logJson(validatedPolicies);
|
|
87
81
|
if (!flags['no-input']) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-policies.js","sourceRoot":"","sources":["../../../src/commands/iam/update-policies.ts"],"names":[],"mappings":";;;;AAAA,0CAAsC;AACtC,+CAA0D;AAC1D,sCAAuC;AACvC,mDAAiD;AACjD,0DAAyB;AACzB,6BAAuB;AACvB,yCAA0D;AAC1D,gEAAuE;AACvE,kDAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"update-policies.js","sourceRoot":"","sources":["../../../src/commands/iam/update-policies.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,13 +9,13 @@ export declare class CreateToken extends BaseCommand<typeof CreateToken> {
|
|
|
9
9
|
'public-key-file': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
10
|
algorithm: import("@oclif/core/lib/interfaces/parser").OptionFlag<SupportedAlgorithms | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
11
|
'with-permissions': import("@oclif/core/lib/interfaces/parser").BooleanFlag<boolean>;
|
|
12
|
+
'auto-generate-key': import("@oclif/core/lib/interfaces/parser").BooleanFlag<boolean>;
|
|
12
13
|
passphrase: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
13
14
|
};
|
|
14
15
|
run(): Promise<TokenDto>;
|
|
15
|
-
private logToken;
|
|
16
16
|
private validateFlags;
|
|
17
|
-
private generateKeyPair;
|
|
18
17
|
private createToken;
|
|
18
|
+
private generateKeyPair;
|
|
19
19
|
private addPrincipal;
|
|
20
20
|
private updatePolicies;
|
|
21
21
|
}
|
|
@@ -3,85 +3,173 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CreateToken = void 0;
|
|
4
4
|
const promises_1 = require("fs/promises");
|
|
5
5
|
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
6
7
|
const core_1 = require("@oclif/core");
|
|
7
8
|
const uuid_1 = require("uuid");
|
|
8
9
|
const zod_1 = require("zod");
|
|
9
10
|
const common_1 = require("../../common");
|
|
10
|
-
const
|
|
11
|
+
const prompts_2 = require("../../common/prompts");
|
|
11
12
|
const validators_1 = require("../../common/validators");
|
|
12
13
|
const jwk_1 = require("../../helpers/jwk");
|
|
13
14
|
const bff_service_1 = require("../../services/affinidi/bff-service");
|
|
14
15
|
const iam_1 = require("../../services/affinidi/iam");
|
|
16
|
+
const flagsSchema = zod_1.z
|
|
17
|
+
.object({
|
|
18
|
+
name: zod_1.z.string().max(validators_1.INPUT_LIMIT),
|
|
19
|
+
algorithm: zod_1.z.nativeEnum(common_1.SupportedAlgorithms),
|
|
20
|
+
'key-id': zod_1.z.string().max(validators_1.INPUT_LIMIT).optional(),
|
|
21
|
+
'public-key-file': zod_1.z.string().max(validators_1.INPUT_LIMIT).optional(),
|
|
22
|
+
'auto-generate-key': zod_1.z.boolean(),
|
|
23
|
+
passphrase: zod_1.z.string().max(validators_1.INPUT_LIMIT).optional(),
|
|
24
|
+
'with-permissions': zod_1.z.boolean(),
|
|
25
|
+
resources: zod_1.z.string().max(validators_1.INPUT_LIMIT).optional().default('*'),
|
|
26
|
+
actions: zod_1.z.string().max(validators_1.INPUT_LIMIT).optional().default('*'),
|
|
27
|
+
})
|
|
28
|
+
.refine((data) => {
|
|
29
|
+
if (!data['auto-generate-key'] && !data['public-key-file']) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}, {
|
|
34
|
+
message: 'public-key-file is required when auto-generate-key is false',
|
|
35
|
+
path: ['public-key-file'],
|
|
36
|
+
});
|
|
15
37
|
class CreateToken extends common_1.BaseCommand {
|
|
16
38
|
async run() {
|
|
17
39
|
const { flags } = await this.parse(CreateToken);
|
|
18
|
-
await this.validateFlags(flags);
|
|
40
|
+
const validatedFlags = await this.validateFlags(flags);
|
|
19
41
|
core_1.ux.action.start('Creating Personal Access Token');
|
|
20
|
-
|
|
42
|
+
let keypair, jwks;
|
|
43
|
+
const kid = validatedFlags['key-id'] ?? (0, uuid_1.v4)();
|
|
44
|
+
if (validatedFlags['auto-generate-key']) {
|
|
45
|
+
keypair = this.generateKeyPair(kid, validatedFlags.algorithm, validatedFlags.passphrase);
|
|
46
|
+
jwks = keypair.jwks;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const publicKeyPEM = await (0, promises_1.readFile)(validatedFlags['public-key-file'], 'utf8');
|
|
50
|
+
const jwk = await (0, jwk_1.pemToJWK)(publicKeyPEM, validatedFlags.algorithm);
|
|
51
|
+
jwks = {
|
|
52
|
+
keys: [
|
|
53
|
+
{
|
|
54
|
+
kid,
|
|
55
|
+
alg: validatedFlags.algorithm,
|
|
56
|
+
use: 'sig',
|
|
57
|
+
kty: jwk.kty ?? (0, jwk_1.getKeyType)(validatedFlags.algorithm),
|
|
58
|
+
n: jwk.n,
|
|
59
|
+
e: jwk.e,
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const token = await this.createToken(validatedFlags.name, validatedFlags.algorithm, jwks, validatedFlags['key-id']);
|
|
65
|
+
core_1.ux.action.stop('Created successfully!');
|
|
21
66
|
let projectId;
|
|
22
|
-
if (
|
|
67
|
+
if (validatedFlags['with-permissions']) {
|
|
68
|
+
core_1.ux.action.start('Adding token to active project');
|
|
23
69
|
const promises = [this.addPrincipal(token.id), bff_service_1.bffService.getActiveProject()];
|
|
24
|
-
const [,
|
|
25
|
-
projectId =
|
|
26
|
-
|
|
27
|
-
|
|
70
|
+
const [, activeProject] = await Promise.all(promises);
|
|
71
|
+
projectId = activeProject.id;
|
|
72
|
+
core_1.ux.action.stop('Added successfully!');
|
|
73
|
+
core_1.ux.action.start('Granting permissions to token');
|
|
74
|
+
const actions = validatedFlags.actions ? validatedFlags.actions.split(' ') : ['*'];
|
|
75
|
+
const resources = validatedFlags.actions ? validatedFlags.actions.split(' ') : ['*'];
|
|
76
|
+
await this.updatePolicies(token.id, projectId, actions, resources);
|
|
77
|
+
core_1.ux.action.stop('Granted successfully!');
|
|
28
78
|
}
|
|
29
|
-
|
|
30
|
-
this.logToken(flags, token, publicKey, privateKey, projectId);
|
|
31
|
-
return token;
|
|
32
|
-
}
|
|
33
|
-
logToken(flags, token, publicKey, privateKey, projectId) {
|
|
34
|
-
if (this.jsonEnabled())
|
|
35
|
-
return;
|
|
36
|
-
if (!flags['with-permissions']) {
|
|
79
|
+
if (!this.jsonEnabled()) {
|
|
37
80
|
this.logJson(token);
|
|
38
|
-
|
|
81
|
+
this.log('\nUse the projectId, tokenId, privateKey and passphrase (if provided) to use this token with Affinidi TDK');
|
|
82
|
+
this.logJson({
|
|
83
|
+
tokenId: token.id,
|
|
84
|
+
...(validatedFlags['with-permissions'] && { projectId }),
|
|
85
|
+
...(validatedFlags['auto-generate-key'] && {
|
|
86
|
+
privateKey: keypair?.privateKey,
|
|
87
|
+
...(validatedFlags.passphrase && { passphrase: validatedFlags.passphrase }),
|
|
88
|
+
}),
|
|
89
|
+
});
|
|
90
|
+
if (validatedFlags['auto-generate-key']) {
|
|
91
|
+
this.warn(this.chalk.yellowBright.bold('\nPlease save the privateKey and passphrase (if provided) somewhere safe. You will not be able to view them again.\n'));
|
|
92
|
+
}
|
|
39
93
|
}
|
|
40
|
-
|
|
41
|
-
const out = {
|
|
42
|
-
apiGatewayUrl: isDev ? 'https://apse1.dev.api.affinidi.io' : 'https://apse1.api.affinidi.io',
|
|
43
|
-
tokenEndpoint: isDev
|
|
44
|
-
? 'https://apse1.dev.auth.developer.affinidi.io/auth/oauth2/token'
|
|
45
|
-
: 'https://apse1.auth.developer.affinidi.io/auth/oauth2/token',
|
|
46
|
-
keyId: flags['key-id'],
|
|
47
|
-
tokenId: token.id,
|
|
48
|
-
passphrase: flags.passphrase,
|
|
49
|
-
privateKey,
|
|
50
|
-
publicKey,
|
|
51
|
-
projectId,
|
|
52
|
-
};
|
|
53
|
-
this.logJson(out);
|
|
54
|
-
this.warn(this.chalk.red.bold('These are your PAT variables for Affinidi TDK.\n❗Please save publicKey and privateKey somewhere safe.\nYou will not be able to view those again.'));
|
|
94
|
+
return token;
|
|
55
95
|
}
|
|
56
96
|
async validateFlags(flags) {
|
|
57
|
-
let promptFlags;
|
|
58
|
-
if (
|
|
59
|
-
promptFlags = await (0, prompts_1.
|
|
97
|
+
let promptFlags = await (0, prompts_2.promptRequiredParameters)(['name'], flags);
|
|
98
|
+
if (!promptFlags['public-key-file'] && !promptFlags['no-input']) {
|
|
99
|
+
promptFlags['auto-generate-key'] ?? (promptFlags['auto-generate-key'] = await (0, prompts_1.confirm)({
|
|
100
|
+
message: 'Generate a new keypair for the token?',
|
|
101
|
+
}));
|
|
60
102
|
}
|
|
61
103
|
else {
|
|
62
|
-
promptFlags =
|
|
104
|
+
promptFlags['auto-generate-key'] = !!promptFlags['auto-generate-key'];
|
|
105
|
+
}
|
|
106
|
+
if (promptFlags['auto-generate-key'] && !promptFlags['no-input']) {
|
|
107
|
+
promptFlags.passphrase = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
108
|
+
message: 'Enter a passphrase to encrypt the private key. Leave it empty for no encryption',
|
|
109
|
+
}), validators_1.INPUT_LIMIT);
|
|
110
|
+
}
|
|
111
|
+
if (!promptFlags['auto-generate-key']) {
|
|
112
|
+
promptFlags = await (0, prompts_2.promptRequiredParameters)(['public-key-file'], promptFlags);
|
|
63
113
|
}
|
|
64
|
-
if (!
|
|
65
|
-
|
|
114
|
+
if (!promptFlags['no-input']) {
|
|
115
|
+
promptFlags['with-permissions'] ?? (promptFlags['with-permissions'] = await (0, prompts_1.confirm)({
|
|
116
|
+
message: 'Add token to active project and grant permissions?',
|
|
117
|
+
}));
|
|
66
118
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
119
|
+
else {
|
|
120
|
+
promptFlags['with-permissions'] = !!promptFlags['with-permissions'];
|
|
121
|
+
}
|
|
122
|
+
if (!promptFlags['no-input'] && promptFlags['with-permissions']) {
|
|
123
|
+
promptFlags.resources = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
124
|
+
message: 'Enter the allowed resources, separated by spaces. Use * to allow access to all project resources',
|
|
125
|
+
default: '*',
|
|
126
|
+
}), validators_1.INPUT_LIMIT);
|
|
127
|
+
promptFlags.actions = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
128
|
+
message: 'Enter the allowed actions, separated by spaces. Use * to allow all actions',
|
|
129
|
+
default: '*',
|
|
130
|
+
}), validators_1.INPUT_LIMIT);
|
|
131
|
+
}
|
|
132
|
+
return flagsSchema.parse(promptFlags);
|
|
133
|
+
}
|
|
134
|
+
async createToken(name, algorithm, jwks, keyId) {
|
|
135
|
+
let token = await iam_1.iamService.createToken({
|
|
136
|
+
name,
|
|
137
|
+
authenticationMethod: {
|
|
138
|
+
type: 'PRIVATE_KEY',
|
|
139
|
+
signingAlgorithm: algorithm,
|
|
140
|
+
publicKeyInfo: {
|
|
141
|
+
jwks,
|
|
142
|
+
},
|
|
143
|
+
},
|
|
73
144
|
});
|
|
74
|
-
|
|
145
|
+
// If keyId was not provided it means that a randomly generated uuid was assigned and we should change it to the tokenId
|
|
146
|
+
if (!keyId) {
|
|
147
|
+
jwks.keys[0].kid = token.id;
|
|
148
|
+
token = await iam_1.iamService.updateToken(token.id, {
|
|
149
|
+
name,
|
|
150
|
+
authenticationMethod: {
|
|
151
|
+
type: 'PRIVATE_KEY',
|
|
152
|
+
signingAlgorithm: algorithm,
|
|
153
|
+
publicKeyInfo: {
|
|
154
|
+
jwks,
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
return token;
|
|
75
160
|
}
|
|
76
|
-
generateKeyPair(
|
|
161
|
+
generateKeyPair(keyId, algorithm, passphrase) {
|
|
77
162
|
const { publicKey, privateKey } = (0, node_crypto_1.generateKeyPairSync)('rsa', { modulusLength: 4096 });
|
|
78
163
|
const publicKeyPem = publicKey.export({ format: 'pem', type: 'spki' });
|
|
79
|
-
const
|
|
164
|
+
const exportOptions = {
|
|
80
165
|
format: 'pem',
|
|
81
166
|
type: 'pkcs8',
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
167
|
+
};
|
|
168
|
+
if (passphrase) {
|
|
169
|
+
exportOptions.cipher = 'aes-256-cbc';
|
|
170
|
+
exportOptions.passphrase = passphrase;
|
|
171
|
+
}
|
|
172
|
+
const privateKeyPem = privateKey.export(exportOptions);
|
|
85
173
|
const publicKeyJwk = publicKey.export({ format: 'jwk' });
|
|
86
174
|
const jwks = {
|
|
87
175
|
keys: [
|
|
@@ -95,62 +183,39 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
95
183
|
};
|
|
96
184
|
return { publicKey: publicKeyPem, privateKey: privateKeyPem, jwks };
|
|
97
185
|
}
|
|
98
|
-
async createToken(flags) {
|
|
99
|
-
let jwks;
|
|
100
|
-
let keypair;
|
|
101
|
-
const algorithm = flags.algorithm;
|
|
102
|
-
if (flags['with-permissions']) {
|
|
103
|
-
keypair = this.generateKeyPair(flags.passphrase, flags['key-id'], algorithm);
|
|
104
|
-
jwks = keypair.jwks;
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
const publicKeyPEM = await (0, promises_1.readFile)(flags['public-key-file'], 'utf8');
|
|
108
|
-
const jwk = await (0, jwk_1.pemToJWK)(publicKeyPEM, algorithm);
|
|
109
|
-
jwks = {
|
|
110
|
-
keys: [
|
|
111
|
-
{
|
|
112
|
-
kid: flags['key-id'],
|
|
113
|
-
alg: algorithm,
|
|
114
|
-
use: 'sig',
|
|
115
|
-
kty: jwk.kty ?? (0, jwk_1.getKeyType)(algorithm),
|
|
116
|
-
n: jwk.n,
|
|
117
|
-
e: jwk.e,
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
const token = await iam_1.iamService.createToken({
|
|
123
|
-
name: flags.name,
|
|
124
|
-
authenticationMethod: {
|
|
125
|
-
type: 'PRIVATE_KEY',
|
|
126
|
-
signingAlgorithm: algorithm,
|
|
127
|
-
publicKeyInfo: {
|
|
128
|
-
jwks,
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
});
|
|
132
|
-
return { token, publicKey: keypair?.publicKey, privateKey: keypair?.privateKey };
|
|
133
|
-
}
|
|
134
186
|
async addPrincipal(tokenId) {
|
|
135
187
|
await iam_1.iamService.addPrincipalToProject({
|
|
136
188
|
principalId: tokenId,
|
|
137
189
|
principalType: 'token',
|
|
138
190
|
});
|
|
139
191
|
}
|
|
140
|
-
async updatePolicies(tokenId) {
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
192
|
+
async updatePolicies(tokenId, activeProjectId, actions, resources) {
|
|
193
|
+
const policiesData = {
|
|
194
|
+
version: '2022-12-15',
|
|
195
|
+
statement: [
|
|
196
|
+
{
|
|
197
|
+
principal: [`ari:iam::${activeProjectId}:token/${tokenId}`],
|
|
198
|
+
action: actions,
|
|
199
|
+
resource: resources,
|
|
200
|
+
effect: 'Allow',
|
|
201
|
+
},
|
|
202
|
+
],
|
|
203
|
+
};
|
|
204
|
+
const validatedPolicies = validators_1.policiesDataSchema.parse(policiesData);
|
|
205
|
+
const result = await iam_1.iamService.updatePolicies(tokenId, 'token', validatedPolicies);
|
|
206
|
+
return result;
|
|
145
207
|
}
|
|
146
208
|
}
|
|
147
209
|
exports.CreateToken = CreateToken;
|
|
148
210
|
CreateToken.summary = 'Creates a Personal Access Token (PAT)';
|
|
149
211
|
CreateToken.examples = [
|
|
150
|
-
'<%= config.bin %> <%= command.id %>
|
|
151
|
-
'<%= config.bin %> <%= command.id %> --name
|
|
152
|
-
'<%= config.bin %> <%= command.id %> -n MyNewToken -
|
|
153
|
-
'<%= config.bin %> <%= command.id %>
|
|
212
|
+
'<%= config.bin %> <%= command.id %>',
|
|
213
|
+
'<%= config.bin %> <%= command.id %> --name "My new token"',
|
|
214
|
+
'<%= config.bin %> <%= command.id %> -n MyNewToken --with-permissions',
|
|
215
|
+
'<%= config.bin %> <%= command.id %> -n MyNewToken --auto-generate-key',
|
|
216
|
+
'<%= config.bin %> <%= command.id %> -n MyNewToken --auto-generate-key --passphrase "MySecretPassphrase" --with-permissions',
|
|
217
|
+
'<%= config.bin %> <%= command.id %> -n MyNewToken --public-key-file publicKey.pem --key-id MyKeyID --algorithm RS256 --with-permissions',
|
|
218
|
+
'<%= config.bin %> <%= command.id %> -n MyNewToken -g -w',
|
|
154
219
|
];
|
|
155
220
|
CreateToken.flags = {
|
|
156
221
|
name: core_1.Flags.string({
|
|
@@ -164,7 +229,6 @@ CreateToken.flags = {
|
|
|
164
229
|
'public-key-file': core_1.Flags.string({
|
|
165
230
|
char: 'f',
|
|
166
231
|
summary: 'Location of the public key PEM file',
|
|
167
|
-
required: false,
|
|
168
232
|
}),
|
|
169
233
|
algorithm: core_1.Flags.custom({
|
|
170
234
|
char: 'a',
|
|
@@ -174,13 +238,17 @@ CreateToken.flags = {
|
|
|
174
238
|
})(),
|
|
175
239
|
'with-permissions': core_1.Flags.boolean({
|
|
176
240
|
char: 'w',
|
|
177
|
-
|
|
178
|
-
|
|
241
|
+
summary: 'Set token policies to perform any action on the active project',
|
|
242
|
+
}),
|
|
243
|
+
'auto-generate-key': core_1.Flags.boolean({
|
|
244
|
+
char: 'g',
|
|
245
|
+
summary: 'Auto-generate private-public key pair',
|
|
246
|
+
exclusive: ['public-key-file'],
|
|
179
247
|
}),
|
|
180
248
|
passphrase: core_1.Flags.string({
|
|
181
249
|
char: 'p',
|
|
182
250
|
summary: 'Passphrase for generation of private public key pair',
|
|
183
|
-
|
|
251
|
+
dependsOn: ['auto-generate-key'],
|
|
184
252
|
}),
|
|
185
253
|
};
|
|
186
254
|
//# sourceMappingURL=create-token.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-token.js","sourceRoot":"","sources":["../../../src/commands/token/create-token.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"create-token.js","sourceRoot":"","sources":["../../../src/commands/token/create-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,51 @@
|
|
|
1
|
+
import z from 'zod';
|
|
1
2
|
export declare const INPUT_LIMIT = 2000;
|
|
2
3
|
export declare const TOKEN_LIMIT = 5000;
|
|
3
4
|
export declare const PRESENTATION_DEFINITION_LIMIT = 5000;
|
|
4
5
|
export declare function validateInputLength(text: string, maxLength: number): string;
|
|
5
6
|
export declare function split(text: string, delimiter: string): string[];
|
|
7
|
+
export declare const policiesDataSchema: z.ZodObject<{
|
|
8
|
+
version: z.ZodString;
|
|
9
|
+
statement: z.ZodArray<z.ZodObject<{
|
|
10
|
+
principal: z.ZodArray<z.ZodString, "many">;
|
|
11
|
+
action: z.ZodArray<z.ZodString, "atleastone">;
|
|
12
|
+
resource: z.ZodArray<z.ZodString, "atleastone">;
|
|
13
|
+
effect: z.ZodLiteral<"Allow">;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
effect: "Allow";
|
|
16
|
+
principal: string[];
|
|
17
|
+
action: [string, ...string[]];
|
|
18
|
+
resource: [string, ...string[]];
|
|
19
|
+
}, {
|
|
20
|
+
effect: "Allow";
|
|
21
|
+
principal: string[];
|
|
22
|
+
action: [string, ...string[]];
|
|
23
|
+
resource: [string, ...string[]];
|
|
24
|
+
}>, "atleastone">;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
version: string;
|
|
27
|
+
statement: [{
|
|
28
|
+
effect: "Allow";
|
|
29
|
+
principal: string[];
|
|
30
|
+
action: [string, ...string[]];
|
|
31
|
+
resource: [string, ...string[]];
|
|
32
|
+
}, ...{
|
|
33
|
+
effect: "Allow";
|
|
34
|
+
principal: string[];
|
|
35
|
+
action: [string, ...string[]];
|
|
36
|
+
resource: [string, ...string[]];
|
|
37
|
+
}[]];
|
|
38
|
+
}, {
|
|
39
|
+
version: string;
|
|
40
|
+
statement: [{
|
|
41
|
+
effect: "Allow";
|
|
42
|
+
principal: string[];
|
|
43
|
+
action: [string, ...string[]];
|
|
44
|
+
resource: [string, ...string[]];
|
|
45
|
+
}, ...{
|
|
46
|
+
effect: "Allow";
|
|
47
|
+
principal: string[];
|
|
48
|
+
action: [string, ...string[]];
|
|
49
|
+
resource: [string, ...string[]];
|
|
50
|
+
}[]];
|
|
51
|
+
}>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.split = exports.validateInputLength = exports.PRESENTATION_DEFINITION_LIMIT = exports.TOKEN_LIMIT = exports.INPUT_LIMIT = void 0;
|
|
3
|
+
exports.policiesDataSchema = exports.split = exports.validateInputLength = exports.PRESENTATION_DEFINITION_LIMIT = exports.TOKEN_LIMIT = exports.INPUT_LIMIT = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
4
5
|
const errors_1 = require("@oclif/core/lib/errors");
|
|
6
|
+
const zod_1 = tslib_1.__importDefault(require("zod"));
|
|
5
7
|
exports.INPUT_LIMIT = 2000;
|
|
6
8
|
exports.TOKEN_LIMIT = 5000;
|
|
7
9
|
exports.PRESENTATION_DEFINITION_LIMIT = 5000;
|
|
@@ -16,4 +18,16 @@ function split(text, delimiter) {
|
|
|
16
18
|
return text.split(delimiter).filter((item) => item.length > 0);
|
|
17
19
|
}
|
|
18
20
|
exports.split = split;
|
|
21
|
+
exports.policiesDataSchema = zod_1.default.object({
|
|
22
|
+
version: zod_1.default.string().max(exports.INPUT_LIMIT),
|
|
23
|
+
statement: zod_1.default
|
|
24
|
+
.object({
|
|
25
|
+
principal: zod_1.default.string().max(exports.INPUT_LIMIT).array().length(1),
|
|
26
|
+
action: zod_1.default.string().max(exports.INPUT_LIMIT).array().nonempty(),
|
|
27
|
+
resource: zod_1.default.string().max(exports.INPUT_LIMIT).array().nonempty(),
|
|
28
|
+
effect: zod_1.default.literal('Allow'),
|
|
29
|
+
})
|
|
30
|
+
.array()
|
|
31
|
+
.nonempty(),
|
|
32
|
+
});
|
|
19
33
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/common/validators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/common/validators.ts"],"names":[],"mappings":";;;;AAAA,mDAAiD;AACjD,sDAAmB;AAEN,QAAA,WAAW,GAAG,IAAI,CAAA;AAClB,QAAA,WAAW,GAAG,IAAI,CAAA;AAClB,QAAA,6BAA6B,GAAG,IAAI,CAAA;AAEjD,SAAgB,mBAAmB,CAAC,IAAY,EAAE,SAAiB;IACjE,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE;QAC3B,MAAM,IAAI,iBAAQ,CAAC,+BAA+B,SAAS,eAAe,CAAC,CAAA;KAC5E;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAND,kDAMC;AAED,SAAgB,KAAK,CAAC,IAAY,EAAE,SAAiB;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAChE,CAAC;AAFD,sBAEC;AAEY,QAAA,kBAAkB,GAAG,aAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,mBAAW,CAAC;IACpC,SAAS,EAAE,aAAC;SACT,MAAM,CAAC;QACN,SAAS,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,mBAAW,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,mBAAW,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QACtD,QAAQ,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,mBAAW,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QACxD,MAAM,EAAE,aAAC,CAAC,OAAO,CAAC,OAAO,CAAC;KAC3B,CAAC;SACD,KAAK,EAAE;SACP,QAAQ,EAAE;CACd,CAAC,CAAA"}
|