@affinidi/cli 2.4.0 → 2.5.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 +27 -1027
- package/dist/commands/generate/app.js +16 -16
- package/dist/commands/generate/app.js.map +1 -1
- package/dist/commands/login/list-users-in-group.d.ts +4 -0
- package/dist/commands/login/list-users-in-group.js +80 -71
- package/dist/commands/login/list-users-in-group.js.map +1 -1
- package/dist/commands/token/create-token.d.ts +8 -0
- package/dist/commands/token/create-token.js +133 -25
- package/dist/commands/token/create-token.js.map +1 -1
- package/package.json +4 -2
|
@@ -26,7 +26,7 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
26
26
|
GenerateApp.libraries = libraries;
|
|
27
27
|
GenerateApp.flags.provider = core_1.Flags.string({
|
|
28
28
|
char: 'a',
|
|
29
|
-
summary: 'Authentication provider for the
|
|
29
|
+
summary: 'Authentication provider for the sample app',
|
|
30
30
|
options: providers,
|
|
31
31
|
});
|
|
32
32
|
}
|
|
@@ -41,7 +41,7 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
41
41
|
}
|
|
42
42
|
const provider = flags.provider ??
|
|
43
43
|
(await (0, prompts_1.select)({
|
|
44
|
-
message: 'Select the provider for the
|
|
44
|
+
message: 'Select the provider for the sample app.',
|
|
45
45
|
choices: GenerateApp.providers.map((value) => ({
|
|
46
46
|
name: value,
|
|
47
47
|
value,
|
|
@@ -49,7 +49,7 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
49
49
|
}));
|
|
50
50
|
const framework = flags.framework ??
|
|
51
51
|
(await (0, prompts_1.select)({
|
|
52
|
-
message: 'Select the framework for the
|
|
52
|
+
message: 'Select the framework for the sample app.',
|
|
53
53
|
choices: GenerateApp.frameworks.get(provider).map((value) => ({
|
|
54
54
|
name: value,
|
|
55
55
|
value,
|
|
@@ -57,7 +57,7 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
57
57
|
}));
|
|
58
58
|
const library = flags.library ??
|
|
59
59
|
(await (0, prompts_1.select)({
|
|
60
|
-
message: 'Select the library for the
|
|
60
|
+
message: 'Select the library for the sample app.',
|
|
61
61
|
choices: GenerateApp.libraries.get(`${provider}-${framework}`).map((value) => ({
|
|
62
62
|
name: value,
|
|
63
63
|
value,
|
|
@@ -75,12 +75,12 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
75
75
|
});
|
|
76
76
|
const validatedFlags = schema.parse(promptFlags);
|
|
77
77
|
const appName = (0, app_1.getAppName)(framework, provider, library);
|
|
78
|
-
core_1.ux.action.start('Generating
|
|
78
|
+
core_1.ux.action.start('Generating sample app');
|
|
79
79
|
await (0, degit_1.cloneWithDegit)(`${APPS_GITHUB_LOCATION}/${appName}`, validatedFlags.path, flags.force);
|
|
80
80
|
core_1.ux.action.stop('Generated successfully!');
|
|
81
81
|
if (!flags['no-input']) {
|
|
82
82
|
const configure = await (0, prompts_1.confirm)({
|
|
83
|
-
message: 'Automatically configure
|
|
83
|
+
message: 'Automatically configure sample app environment?',
|
|
84
84
|
});
|
|
85
85
|
if (configure) {
|
|
86
86
|
core_1.ux.action.start('Fetching available login configurations');
|
|
@@ -101,7 +101,7 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
101
101
|
name: 'Create new login config',
|
|
102
102
|
});
|
|
103
103
|
const selectedConfig = await (0, prompts_1.select)({
|
|
104
|
-
message: 'Select a login configuration to use in your
|
|
104
|
+
message: 'Select a login configuration to use in your sample app',
|
|
105
105
|
choices,
|
|
106
106
|
});
|
|
107
107
|
let newConfigClientSecret = undefined;
|
|
@@ -126,14 +126,14 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
126
126
|
mask: true,
|
|
127
127
|
}), validators_1.INPUT_LIMIT);
|
|
128
128
|
if (provider === common_1.RefAppProvider.AFFINIDI) {
|
|
129
|
-
core_1.ux.action.start('Configuring
|
|
129
|
+
core_1.ux.action.start('Configuring sample app');
|
|
130
130
|
await (0, env_configurer_1.configureAppEnvironment)(validatedFlags.path, selectedConfig.auth.clientId, clientSecret, selectedConfig.auth.issuer);
|
|
131
131
|
core_1.ux.action.stop('Configured successfully!');
|
|
132
132
|
}
|
|
133
133
|
else if (provider === common_1.RefAppProvider.AUTH0) {
|
|
134
134
|
const domain = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({ message: 'What is your Auth0 tenant URL?' }), validators_1.INPUT_LIMIT);
|
|
135
135
|
const accessToken = (0, validators_1.validateInputLength)(await (0, password_1.default)({ message: 'What is your Auth0 access token?' }), validators_1.TOKEN_LIMIT);
|
|
136
|
-
core_1.ux.action.start('Creating Auth0 resources and configuring
|
|
136
|
+
core_1.ux.action.start('Creating Auth0 resources and configuring sample app');
|
|
137
137
|
const socialConnectionName = `Affinidi-${framework}`;
|
|
138
138
|
const { auth0ClientId, auth0ClientSecret, connectionName } = await (0, auth0_1.createAuth0Resources)(accessToken, domain, selectedConfig.auth.clientId, clientSecret, selectedConfig.auth.issuer, socialConnectionName, {
|
|
139
139
|
callbackUrl: GenerateApp.apps.appName.redirectUris.callbackUrl,
|
|
@@ -145,11 +145,11 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
-
this.log('Please read the generated README for instructions on how to run your
|
|
148
|
+
this.log('Please read the generated README for instructions on how to run your sample app');
|
|
149
149
|
}
|
|
150
150
|
catch (err) {
|
|
151
151
|
if (!err?.oclif)
|
|
152
|
-
throw new errors_1.CLIError('Unexpected error while generating
|
|
152
|
+
throw new errors_1.CLIError('Unexpected error while generating sample app');
|
|
153
153
|
else
|
|
154
154
|
throw new errors_1.CLIError(err);
|
|
155
155
|
}
|
|
@@ -157,7 +157,7 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
157
157
|
}
|
|
158
158
|
exports.default = GenerateApp;
|
|
159
159
|
GenerateApp.providers = [];
|
|
160
|
-
GenerateApp.summary = 'Generates
|
|
160
|
+
GenerateApp.summary = 'Generates code samples that integrates Affinidi Login. Requires git';
|
|
161
161
|
GenerateApp.examples = [
|
|
162
162
|
'<%= config.bin %> <%= command.id %>',
|
|
163
163
|
'<%= config.bin %> <%= command.id %> -p "../my-app" -f django -a affinidi',
|
|
@@ -166,19 +166,19 @@ GenerateApp.examples = [
|
|
|
166
166
|
GenerateApp.flags = {
|
|
167
167
|
provider: core_1.Flags.string({
|
|
168
168
|
char: 'a',
|
|
169
|
-
summary: 'Authentication provider for the
|
|
169
|
+
summary: 'Authentication provider for the sample app',
|
|
170
170
|
}),
|
|
171
171
|
framework: core_1.Flags.string({
|
|
172
172
|
char: 'f',
|
|
173
|
-
summary: 'Framework for the
|
|
173
|
+
summary: 'Framework for the sample app',
|
|
174
174
|
}),
|
|
175
175
|
library: core_1.Flags.string({
|
|
176
176
|
char: 'l',
|
|
177
|
-
summary: 'Library for the
|
|
177
|
+
summary: 'Library for the sample app',
|
|
178
178
|
}),
|
|
179
179
|
path: core_1.Flags.string({
|
|
180
180
|
char: 'p',
|
|
181
|
-
summary: 'Relative or absolute path where
|
|
181
|
+
summary: 'Relative or absolute path where sample app should be cloned into',
|
|
182
182
|
}),
|
|
183
183
|
force: core_1.Flags.boolean({
|
|
184
184
|
summary: 'Override destination directory if exists',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":";;;AAAA,0EAAyC;AACzC,+CAA0D;AAC1D,sCAAuC;AACvC,mDAAiD;AACjD,sDAAmB;AACnB,yCAA0D;AAC1D,gEAAuE;AACvE,kDAA+D;AAC/D,wDAAuF;AACvF,2CAAqH;AACrH,+CAAoD;AACpD,mEAAqE;AACrE,0DAAqE;AACrE,4EAAiF;AAEjF,MAAM,gCAAgC,GAAG,mBAAmB,CAAA;AAC5D,MAAM,oBAAoB,GAAG,+CAA+C,CAAA;AAE5E,MAAqB,WAAY,SAAQ,oBAA+B;IAkCtE,KAAK,CAAC,IAAI;QACR,WAAW,CAAC,IAAI,GAAG,MAAM,IAAA,aAAO,EAAC,gCAAgC,CAAC,CAAA;QAClE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAA,iCAA2B,EAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC1F,WAAW,CAAC,SAAS,GAAG,SAAS,CAAA;QACjC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAA;QACnC,WAAW,CAAC,SAAS,GAAG,SAAS,CAAA;QAEjC,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAK,CAAC,MAAM,CAAC;YACxC,IAAI,EAAE,GAAG;YACT,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,4 +17,8 @@ export declare class ListUsersInGroup extends BaseCommand<typeof ListUsersInGrou
|
|
|
17
17
|
firstStartingToken: string;
|
|
18
18
|
};
|
|
19
19
|
run(): Promise<GroupUserMappingsList>;
|
|
20
|
+
paginationPrompting(startingToken: string | undefined, lastEvaluatedKey: string | undefined, totalUserCount: number | undefined, pageSize: number, groupName: string): Promise<void>;
|
|
21
|
+
handleChoices(choices: {
|
|
22
|
+
value: string;
|
|
23
|
+
}[], selectionMessage: string, pageSize: number, startingToken: string | undefined, lastEvaluatedKey: string | undefined, groupName: string): Promise<void>;
|
|
20
24
|
}
|
|
@@ -25,6 +25,7 @@ class ListUsersInGroup extends common_1.BaseCommand {
|
|
|
25
25
|
const validatedFlags = schema.parse(promptFlags);
|
|
26
26
|
const pageSize = validatedFlags['page-size'] ?? exports.PAGE_SIZE_DEFAULT;
|
|
27
27
|
const startingToken = validatedFlags['starting-token'] ?? undefined;
|
|
28
|
+
const groupName = validatedFlags['group-name'];
|
|
28
29
|
core_1.ux.action.start('Fetching users in the user group');
|
|
29
30
|
const listGroupUsersOutput = await vp_adapter_1.vpAdapterService.listGroupUsers(validatedFlags['group-name'], {
|
|
30
31
|
limit: pageSize,
|
|
@@ -37,82 +38,90 @@ class ListUsersInGroup extends common_1.BaseCommand {
|
|
|
37
38
|
...rest,
|
|
38
39
|
'starting-token': lastEvaluatedKey,
|
|
39
40
|
});
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
41
|
+
const enablePromptingForPagination = (lastEvaluatedKey || ListUsersInGroup.lastEvalutatedKeys || ListUsersInGroup.pageNumber === 2) &&
|
|
42
|
+
!flags['no-input'];
|
|
43
|
+
if (enablePromptingForPagination) {
|
|
44
|
+
await this.paginationPrompting(startingToken, lastEvaluatedKey, listGroupUsersOutput.totalUserCount, pageSize, groupName);
|
|
45
|
+
}
|
|
46
|
+
ListUsersInGroup.pageNumber = 0;
|
|
47
|
+
return listGroupUsersOutput;
|
|
48
|
+
}
|
|
49
|
+
async paginationPrompting(startingToken, lastEvaluatedKey, totalUserCount, pageSize, groupName) {
|
|
50
|
+
if (startingToken &&
|
|
51
|
+
ListUsersInGroup.pageNumber === 1 &&
|
|
52
|
+
!ListUsersInGroup.middleListPrompting.firstPage &&
|
|
53
|
+
!ListUsersInGroup.middleListPrompting.startingTokenProvided) {
|
|
54
|
+
ListUsersInGroup.middleListPrompting = {
|
|
55
|
+
firstPage: true,
|
|
56
|
+
startingTokenProvided: true,
|
|
57
|
+
firstStartingToken: startingToken,
|
|
58
|
+
};
|
|
59
|
+
ListUsersInGroup.lastEvalutatedKeys += startingToken + ',';
|
|
60
|
+
}
|
|
61
|
+
if (ListUsersInGroup.middleListPrompting.firstStartingToken === startingToken)
|
|
62
|
+
ListUsersInGroup.lastEvalutatedKeys = startingToken + ',' + ListUsersInGroup.lastEvalutatedKeys;
|
|
63
|
+
let totalPages = ListUsersInGroup.middleListPrompting.startingTokenProvided
|
|
64
|
+
? 'Page number information is not available'
|
|
65
|
+
: totalUserCount
|
|
66
|
+
? Math.ceil(totalUserCount / pageSize).toString()
|
|
67
|
+
: '1' || '1';
|
|
68
|
+
totalPages = totalPages === '0' ? '1' : totalPages;
|
|
69
|
+
const choices = [{ value: NEXT }, { value: PREVIOUS }, { value: EXIT }];
|
|
70
|
+
if ((ListUsersInGroup.pageNumber === 1 && !ListUsersInGroup.middleListPrompting.startingTokenProvided) ||
|
|
71
|
+
ListUsersInGroup.middleListPrompting.firstPage) {
|
|
72
|
+
choices.splice(1, 1); // Remove PREVIOUS if on first page
|
|
73
|
+
}
|
|
74
|
+
if (!lastEvaluatedKey)
|
|
75
|
+
choices.splice(0, 1); // Remove NEXT if no more pages
|
|
76
|
+
const selectionMessage = ListUsersInGroup.middleListPrompting.startingTokenProvided
|
|
77
|
+
? totalPages
|
|
78
|
+
: `Showing page ${ListUsersInGroup.pageNumber}/${totalPages}`;
|
|
79
|
+
await this.handleChoices(choices, selectionMessage, pageSize, startingToken, lastEvaluatedKey, groupName);
|
|
80
|
+
}
|
|
81
|
+
async handleChoices(choices, selectionMessage, pageSize, startingToken, lastEvaluatedKey, groupName) {
|
|
82
|
+
let paginationChoice = await (0, prompts_1.select)({
|
|
83
|
+
choices,
|
|
84
|
+
message: selectionMessage,
|
|
85
|
+
});
|
|
86
|
+
let shouldExit = false;
|
|
87
|
+
while (paginationChoice === EXIT && !shouldExit) {
|
|
88
|
+
shouldExit = await (0, prompts_1.confirm)({ message: 'Are you sure you want to exit?' });
|
|
89
|
+
if (!shouldExit) {
|
|
90
|
+
paginationChoice = await (0, prompts_1.select)({
|
|
91
|
+
choices,
|
|
92
|
+
message: selectionMessage,
|
|
93
|
+
});
|
|
64
94
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
shouldExit = await (0, prompts_1.confirm)({ message: 'Are you sure you want to exit?' });
|
|
77
|
-
if (!shouldExit) {
|
|
78
|
-
paginationChoice = await (0, prompts_1.select)({
|
|
79
|
-
choices,
|
|
80
|
-
message: selectionMessage,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
95
|
+
}
|
|
96
|
+
if (paginationChoice !== EXIT) {
|
|
97
|
+
let startingTokenFlag = [];
|
|
98
|
+
const pageSizeFlag = pageSize ? [`--page-size=${pageSize}`] : [];
|
|
99
|
+
if (paginationChoice === NEXT && lastEvaluatedKey) {
|
|
100
|
+
ListUsersInGroup.lastEvalutatedKeys += startingToken ? startingToken + ',' : '';
|
|
101
|
+
if (!ListUsersInGroup.middleListPrompting.startingTokenProvided)
|
|
102
|
+
ListUsersInGroup.pageNumber++;
|
|
103
|
+
if (ListUsersInGroup.middleListPrompting.firstPage)
|
|
104
|
+
ListUsersInGroup.middleListPrompting.firstPage = false;
|
|
105
|
+
startingTokenFlag = [`--starting-token=${lastEvaluatedKey}`];
|
|
83
106
|
}
|
|
84
|
-
if (paginationChoice
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (ListUsersInGroup.middleListPrompting.firstPage)
|
|
92
|
-
ListUsersInGroup.middleListPrompting.firstPage = false;
|
|
93
|
-
startingTokenFlag = [`--starting-token=${lastEvaluatedKey}`];
|
|
107
|
+
else if (paginationChoice === PREVIOUS) {
|
|
108
|
+
if (!ListUsersInGroup.middleListPrompting.startingTokenProvided)
|
|
109
|
+
ListUsersInGroup.pageNumber--;
|
|
110
|
+
const lastEvalKeysArray = ListUsersInGroup.lastEvalutatedKeys.split(',').slice(0, -1);
|
|
111
|
+
const previuosStartingToken = lastEvalKeysArray.pop();
|
|
112
|
+
if (ListUsersInGroup.middleListPrompting.firstStartingToken === previuosStartingToken) {
|
|
113
|
+
ListUsersInGroup.middleListPrompting.firstPage = true;
|
|
94
114
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
ListUsersInGroup.pageNumber--;
|
|
98
|
-
const lastEvalKeysArray = ListUsersInGroup.lastEvalutatedKeys.split(',').slice(0, -1);
|
|
99
|
-
const previuosStartingToken = lastEvalKeysArray.pop();
|
|
100
|
-
if (ListUsersInGroup.middleListPrompting.firstStartingToken === previuosStartingToken) {
|
|
101
|
-
ListUsersInGroup.middleListPrompting.firstPage = true;
|
|
102
|
-
}
|
|
103
|
-
ListUsersInGroup.lastEvalutatedKeys = lastEvalKeysArray.length ? lastEvalKeysArray.join(',') + ',' : '';
|
|
104
|
-
startingTokenFlag = previuosStartingToken ? [`--starting-token=${previuosStartingToken}`] : [];
|
|
105
|
-
}
|
|
106
|
-
// Run command with updated flags
|
|
107
|
-
await this.config.runCommand('login:list-users-in-group', [
|
|
108
|
-
`--group-name=${validatedFlags['group-name']}`,
|
|
109
|
-
...startingTokenFlag,
|
|
110
|
-
...pageSizeFlag,
|
|
111
|
-
]);
|
|
115
|
+
ListUsersInGroup.lastEvalutatedKeys = lastEvalKeysArray.length ? lastEvalKeysArray.join(',') + ',' : '';
|
|
116
|
+
startingTokenFlag = previuosStartingToken ? [`--starting-token=${previuosStartingToken}`] : [];
|
|
112
117
|
}
|
|
118
|
+
// Run command with updated flags
|
|
119
|
+
await this.config.runCommand('login:list-users-in-group', [
|
|
120
|
+
`--group-name=${groupName}`,
|
|
121
|
+
...startingTokenFlag,
|
|
122
|
+
...pageSizeFlag,
|
|
123
|
+
]);
|
|
113
124
|
}
|
|
114
|
-
ListUsersInGroup.pageNumber = 0;
|
|
115
|
-
return listGroupUsersOutput;
|
|
116
125
|
}
|
|
117
126
|
}
|
|
118
127
|
exports.ListUsersInGroup = ListUsersInGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-users-in-group.js","sourceRoot":"","sources":["../../../src/commands/login/list-users-in-group.ts"],"names":[],"mappings":";;;;AAAA,+CAAmD;AACnD,sCAAuC;AACvC,sDAAmB;AACnB,yCAA0C;AAC1C,kDAA+D;AAC/D,wDAAqD;AACrD,mEAAqE;AAGrE,MAAM,IAAI,GAAG,MAAM,CAAA;AACnB,MAAM,QAAQ,GAAG,UAAU,CAAA;AAC3B,MAAM,IAAI,GAAG,MAAM,CAAA;AACN,QAAA,iBAAiB,GAAG,EAAE,CAAA;AAEnC,MAAa,gBAAiB,SAAQ,oBAAoC;IAsBjE,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAwB,EAAC,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAA;QACzE,MAAM,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC;YACtB,YAAY,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,wBAAW,CAAC;YACzC,WAAW,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YAC7C,gBAAgB,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACxC,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,yBAAiB,CAAA;QACjE,MAAM,aAAa,GAAG,cAAc,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"list-users-in-group.js","sourceRoot":"","sources":["../../../src/commands/login/list-users-in-group.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,14 @@ export declare class CreateToken extends BaseCommand<typeof CreateToken> {
|
|
|
8
8
|
'key-id': import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
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
|
+
'with-permissions': import("@oclif/core/lib/interfaces/parser").BooleanFlag<boolean>;
|
|
12
|
+
passphrase: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
13
|
};
|
|
12
14
|
run(): Promise<TokenDto>;
|
|
15
|
+
private logToken;
|
|
16
|
+
private validateFlags;
|
|
17
|
+
private generateKeyPair;
|
|
18
|
+
private createToken;
|
|
19
|
+
private addPrincipal;
|
|
20
|
+
private updatePolicies;
|
|
13
21
|
}
|
|
@@ -2,57 +2,153 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CreateToken = void 0;
|
|
4
4
|
const promises_1 = require("fs/promises");
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
6
|
const core_1 = require("@oclif/core");
|
|
7
|
+
const uuid_1 = require("uuid");
|
|
6
8
|
const zod_1 = require("zod");
|
|
7
9
|
const common_1 = require("../../common");
|
|
8
10
|
const prompts_1 = require("../../common/prompts");
|
|
9
11
|
const validators_1 = require("../../common/validators");
|
|
10
12
|
const jwk_1 = require("../../helpers/jwk");
|
|
13
|
+
const bff_service_1 = require("../../services/affinidi/bff-service");
|
|
11
14
|
const iam_1 = require("../../services/affinidi/iam");
|
|
12
15
|
class CreateToken extends common_1.BaseCommand {
|
|
13
16
|
async run() {
|
|
14
17
|
const { flags } = await this.parse(CreateToken);
|
|
15
|
-
|
|
18
|
+
await this.validateFlags(flags);
|
|
19
|
+
core_1.ux.action.start('Creating Personal Access Token');
|
|
20
|
+
const { token, publicKey, privateKey } = await this.createToken(flags);
|
|
21
|
+
let projectId;
|
|
22
|
+
if (flags['with-permissions']) {
|
|
23
|
+
const promises = [this.addPrincipal(token.id), bff_service_1.bffService.getActiveProject()];
|
|
24
|
+
const [, project] = await Promise.all(promises);
|
|
25
|
+
projectId = project?.id;
|
|
26
|
+
// NOTE: Should run after addPrincipal is completed
|
|
27
|
+
await this.updatePolicies(token.id);
|
|
28
|
+
}
|
|
29
|
+
core_1.ux.action.stop('Created successfully!');
|
|
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']) {
|
|
37
|
+
this.logJson(token);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const isDev = process.env.AFFINIDI_CLI_ENVIRONMENT === 'dev';
|
|
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.'));
|
|
55
|
+
}
|
|
56
|
+
async validateFlags(flags) {
|
|
57
|
+
let promptFlags;
|
|
58
|
+
if (flags['with-permissions']) {
|
|
59
|
+
promptFlags = await (0, prompts_1.promptRequiredParameters)(['name', 'passphrase'], flags);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
promptFlags = await (0, prompts_1.promptRequiredParameters)(['name', 'public-key-file'], flags);
|
|
63
|
+
}
|
|
64
|
+
if (!flags['key-id']) {
|
|
65
|
+
flags['key-id'] = (0, uuid_1.v4)();
|
|
66
|
+
}
|
|
16
67
|
const schema = zod_1.z.object({
|
|
17
68
|
name: zod_1.z.string().max(validators_1.INPUT_LIMIT).min(8),
|
|
18
69
|
algorithm: zod_1.z.nativeEnum(common_1.SupportedAlgorithms),
|
|
19
70
|
'key-id': zod_1.z.string().max(validators_1.INPUT_LIMIT),
|
|
20
|
-
'
|
|
71
|
+
...(flags['with-permissions'] && { passphrase: zod_1.z.string().max(validators_1.INPUT_LIMIT).min(8) }),
|
|
72
|
+
...(!flags['with-permissions'] && { 'public-key-file': zod_1.z.string().max(validators_1.INPUT_LIMIT) }),
|
|
21
73
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
74
|
+
schema.parse(promptFlags);
|
|
75
|
+
}
|
|
76
|
+
generateKeyPair(passphrase, keyId, algorithm) {
|
|
77
|
+
const { publicKey, privateKey } = (0, node_crypto_1.generateKeyPairSync)('rsa', { modulusLength: 4096 });
|
|
78
|
+
const publicKeyPem = publicKey.export({ format: 'pem', type: 'spki' });
|
|
79
|
+
const privateKeyPem = privateKey.export({
|
|
80
|
+
format: 'pem',
|
|
81
|
+
type: 'pkcs8',
|
|
82
|
+
cipher: 'aes-256-cbc',
|
|
83
|
+
passphrase,
|
|
84
|
+
});
|
|
85
|
+
const publicKeyJwk = publicKey.export({ format: 'jwk' });
|
|
86
|
+
const jwks = {
|
|
87
|
+
keys: [
|
|
88
|
+
{
|
|
89
|
+
use: 'sig',
|
|
90
|
+
kid: keyId,
|
|
91
|
+
alg: algorithm,
|
|
92
|
+
...publicKeyJwk,
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
};
|
|
96
|
+
return { publicKey: publicKeyPem, privateKey: privateKeyPem, jwks };
|
|
97
|
+
}
|
|
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,
|
|
28
124
|
authenticationMethod: {
|
|
29
125
|
type: 'PRIVATE_KEY',
|
|
30
|
-
signingAlgorithm:
|
|
126
|
+
signingAlgorithm: algorithm,
|
|
31
127
|
publicKeyInfo: {
|
|
32
|
-
jwks
|
|
33
|
-
keys: [
|
|
34
|
-
{
|
|
35
|
-
kid: validatedFlags['key-id'],
|
|
36
|
-
alg: validatedFlags.algorithm,
|
|
37
|
-
use: 'sig',
|
|
38
|
-
kty: jwk.kty ?? (0, jwk_1.getKeyType)(validatedFlags.algorithm),
|
|
39
|
-
n: jwk.n,
|
|
40
|
-
e: jwk.e,
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
},
|
|
128
|
+
jwks,
|
|
44
129
|
},
|
|
45
130
|
},
|
|
46
131
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
132
|
+
return { token, publicKey: keypair?.publicKey, privateKey: keypair?.privateKey };
|
|
133
|
+
}
|
|
134
|
+
async addPrincipal(tokenId) {
|
|
135
|
+
await iam_1.iamService.addPrincipalToProject({
|
|
136
|
+
principalId: tokenId,
|
|
137
|
+
principalType: 'token',
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
async updatePolicies(tokenId) {
|
|
141
|
+
const policies = await iam_1.iamService.getPolicies(tokenId, 'token');
|
|
142
|
+
policies.statement[0].action[0] = '*';
|
|
143
|
+
policies.statement[0].resource[0] = '*';
|
|
144
|
+
await iam_1.iamService.updatePolicies(tokenId, 'token', policies);
|
|
51
145
|
}
|
|
52
146
|
}
|
|
53
147
|
exports.CreateToken = CreateToken;
|
|
54
148
|
CreateToken.summary = 'Creates a Personal Access Token (PAT)';
|
|
55
149
|
CreateToken.examples = [
|
|
150
|
+
'<%= config.bin %> <%= command.id %> -n MyNewToken -w -p top-secret',
|
|
151
|
+
'<%= config.bin %> <%= command.id %> --name MyNewToken --with-permissions --passphrase top-secret',
|
|
56
152
|
'<%= config.bin %> <%= command.id %> -n MyNewToken -k MyKeyID -f publicKey.pem',
|
|
57
153
|
'<%= config.bin %> <%= command.id %> --name "My new token" --key-id MyKeyID --public-key-file publicKey.pem --algorithm RS256',
|
|
58
154
|
];
|
|
@@ -68,11 +164,23 @@ CreateToken.flags = {
|
|
|
68
164
|
'public-key-file': core_1.Flags.string({
|
|
69
165
|
char: 'f',
|
|
70
166
|
summary: 'Location of the public key PEM file',
|
|
167
|
+
required: false,
|
|
71
168
|
}),
|
|
72
169
|
algorithm: core_1.Flags.custom({
|
|
170
|
+
char: 'a',
|
|
73
171
|
summary: 'The specific cryptographic algorithm used with the key',
|
|
74
172
|
options: Object.values(common_1.SupportedAlgorithms),
|
|
75
173
|
default: common_1.SupportedAlgorithms.RS256,
|
|
76
174
|
})(),
|
|
175
|
+
'with-permissions': core_1.Flags.boolean({
|
|
176
|
+
char: 'w',
|
|
177
|
+
default: false,
|
|
178
|
+
summary: 'Create ready-to-use PAT with auto-generated private public key pair and set its access policies',
|
|
179
|
+
}),
|
|
180
|
+
passphrase: core_1.Flags.string({
|
|
181
|
+
char: 'p',
|
|
182
|
+
summary: 'Passphrase for generation of private public key pair',
|
|
183
|
+
required: false,
|
|
184
|
+
}),
|
|
77
185
|
};
|
|
78
186
|
//# sourceMappingURL=create-token.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-token.js","sourceRoot":"","sources":["../../../src/commands/token/create-token.ts"],"names":[],"mappings":";;;AAAA,0CAAsC;AACtC,sCAAuC;AACvC,6BAAuB;AACvB,yCAA+D;AAC/D,kDAA+D;AAC/D,wDAAqD;AACrD,2CAAwD;AACxD,qDAAwD;AAGxD,MAAa,WAAY,SAAQ,oBAA+B;
|
|
1
|
+
{"version":3,"file":"create-token.js","sourceRoot":"","sources":["../../../src/commands/token/create-token.ts"],"names":[],"mappings":"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"}
|