Skip to content

Commit b6ede91

Browse files
committed
apply feedback
1 parent efb9976 commit b6ede91

File tree

7 files changed

+31
-39
lines changed

7 files changed

+31
-39
lines changed

Diff for: packages/@n8n/api-types/src/dto/common.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { z } from 'zod';
2+
3+
export const booleanLiteral = z.union([z.literal('true'), z.literal('false')]);
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { z } from 'zod';
21
import { Z } from 'zod-class';
32

4-
// TODO: document what these flags do
5-
export class CredentialsGetManyRequest extends Z.class({
3+
import { booleanLiteral } from 'dto/common';
4+
5+
export class CredentialsGetManyRequestQuery extends Z.class({
66
/**
77
* Adds the `scopes` field to each credential which includes all scopes the
88
* requesting user has in relation to the credential, e.g.
99
* ['credential:read', 'credential:update']
1010
*/
11-
includeScopes: z.union([z.literal('true'), z.literal('false')]).optional(),
11+
includeScopes: booleanLiteral.optional(),
1212

1313
/**
1414
* Adds the decrypted `data` field to each credential.
@@ -18,5 +18,5 @@ export class CredentialsGetManyRequest extends Z.class({
1818
*
1919
* This switches `includeScopes` to true to be able to check for the scopes
2020
*/
21-
includeData: z.union([z.literal('true'), z.literal('false')]).optional(),
21+
includeData: booleanLiteral.optional(),
2222
}) {}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { z } from 'zod';
21
import { Z } from 'zod-class';
32

4-
export class CredentialsGetOneRequest extends Z.class({
5-
includeData: z.union([z.literal('true'), z.literal('false')]).optional(),
3+
import { booleanLiteral } from 'dto/common';
4+
5+
export class CredentialsGetOneRequestQuery extends Z.class({
6+
includeData: booleanLiteral.optional(),
67
}) {}

Diff for: packages/@n8n/api-types/src/dto/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ export { SettingsUpdateRequestDto } from './user/settings-update-request.dto';
44
export { UserUpdateRequestDto } from './user/user-update-request.dto';
55
export { CommunityRegisteredRequestDto } from './license/community-registered-request.dto';
66
export { VariableListRequestDto } from './variables/variables-list-request.dto';
7-
export { CredentialsGetOneRequest } from './credentials/credentials-get-one-request.dto';
8-
export { CredentialsGetManyRequest } from './credentials/credentials-get-many-request.dto';
7+
export { CredentialsGetOneRequestQuery } from './credentials/credentials-get-one-request.dto';
8+
export { CredentialsGetManyRequestQuery } from './credentials/credentials-get-many-request.dto';

Diff for: packages/cli/src/credentials/credentials.controller.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { CredentialsGetManyRequest, CredentialsGetOneRequest } from '@n8n/api-types';
1+
import { CredentialsGetManyRequestQuery, CredentialsGetOneRequestQuery } from '@n8n/api-types';
22
import { GlobalConfig } from '@n8n/config';
33
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
44
import { In } from '@n8n/typeorm';
@@ -54,7 +54,7 @@ export class CredentialsController {
5454
async getMany(
5555
req: CredentialRequest.GetMany,
5656
_res: unknown,
57-
@Query query: CredentialsGetManyRequest,
57+
@Query query: CredentialsGetManyRequestQuery,
5858
) {
5959
const credentials = await this.credentialsService.getMany(req.user, {
6060
listQueryOptions: req.listQueryOptions,
@@ -93,7 +93,7 @@ export class CredentialsController {
9393
req: CredentialRequest.Get,
9494
_res: unknown,
9595
@Param('credentialId') credentialId: string,
96-
@Query query: CredentialsGetOneRequest,
96+
@Query query: CredentialsGetOneRequestQuery,
9797
) {
9898
const { shared, ...credential } = this.license.isSharingEnabled()
9999
? await this.enterpriseCredentialsService.getOne(

Diff for: packages/cli/src/credentials/credentials.service.ts

+2-14
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,9 @@ export class CredentialsService {
131131

132132
if (includeData) {
133133
credentials = credentials.map((c: CredentialsEntity & ScopesField) => {
134-
if (c.scopes.includes('credential:update')) {
135-
return {
136-
...c,
137-
data: this.decrypt(c),
138-
} as unknown as CredentialsEntity;
139-
}
140134
return {
141135
...c,
142-
data: undefined,
136+
data: c.scopes.includes('credential:update') ? this.decrypt(c) : undefined,
143137
} as unknown as CredentialsEntity;
144138
});
145139
}
@@ -191,15 +185,9 @@ export class CredentialsService {
191185

192186
if (includeData) {
193187
credentials = credentials.map((c: CredentialsEntity & ScopesField) => {
194-
if (c.scopes.includes('credential:update')) {
195-
return {
196-
...c,
197-
data: this.decrypt(c),
198-
} as unknown as CredentialsEntity;
199-
}
200188
return {
201189
...c,
202-
data: undefined,
190+
data: c.scopes.includes('credential:update') ? this.decrypt(c) : undefined,
203191
} as unknown as CredentialsEntity;
204192
});
205193
}

Diff for: packages/cli/src/databases/repositories/credentials.repository.ts

+12-12
Original file line numberDiff line numberDiff line change
@@ -31,25 +31,14 @@ export class CredentialsRepository extends Repository<CredentialsEntity> {
3131
) {
3232
const findManyOptions = this.toFindManyOptions(listQueryOptions);
3333

34-
if (listQueryOptions?.includeData) {
35-
if (Array.isArray(findManyOptions.select)) {
36-
findManyOptions.select.push('data');
37-
} else if (typeof findManyOptions.select === 'object') {
38-
findManyOptions.select.data = true;
39-
} else {
40-
findManyOptions.select ??= [];
41-
findManyOptions.select.push('data');
42-
}
43-
}
44-
4534
if (credentialIds) {
4635
findManyOptions.where = { ...findManyOptions.where, id: In(credentialIds) };
4736
}
4837

4938
return await this.find(findManyOptions);
5039
}
5140

52-
private toFindManyOptions(listQueryOptions?: ListQuery.Options) {
41+
private toFindManyOptions(listQueryOptions?: ListQuery.Options & { includeData?: boolean }) {
5342
const findManyOptions: FindManyOptions<CredentialsEntity> = {};
5443

5544
type Select = Array<keyof CredentialsEntity>;
@@ -88,6 +77,17 @@ export class CredentialsRepository extends Repository<CredentialsEntity> {
8877
findManyOptions.relations = defaultRelations;
8978
}
9079

80+
if (listQueryOptions.includeData) {
81+
if (Array.isArray(findManyOptions.select)) {
82+
findManyOptions.select.push('data');
83+
} else if (typeof findManyOptions.select === 'object') {
84+
findManyOptions.select.data = true;
85+
} else {
86+
findManyOptions.select ??= [];
87+
findManyOptions.select.push('data');
88+
}
89+
}
90+
9191
return findManyOptions;
9292
}
9393

0 commit comments

Comments
 (0)