Skip to content

Commit f835c66

Browse files
authored
fix(core): ID quoting in add scopes migration (#14788)
1 parent 65d6b23 commit f835c66

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

packages/cli/src/databases/migrations/common/1742918400000-AddScopesColumnToApiKeys.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,33 @@
11
import type { GlobalRole } from '@n8n/permissions';
22

3+
import { ApiKey } from '@/databases/entities/api-key';
34
import type { MigrationContext, ReversibleMigration } from '@/databases/types';
45
import { getApiKeyScopesForRole } from '@/public-api/permissions.ee';
56

67
type ApiKeyWithRole = { id: string; role: GlobalRole };
78

89
export class AddScopesColumnToApiKeys1742918400000 implements ReversibleMigration {
9-
async up({ runQuery, escape, schemaBuilder: { addColumns, column } }: MigrationContext) {
10+
async up({
11+
runQuery,
12+
escape,
13+
queryRunner,
14+
schemaBuilder: { addColumns, column },
15+
}: MigrationContext) {
1016
await addColumns('user_api_keys', [column('scopes').json]);
1117

1218
const userApiKeysTable = escape.tableName('user_api_keys');
1319
const userTable = escape.tableName('user');
1420
const idColumn = escape.columnName('id');
1521
const userIdColumn = escape.columnName('userId');
1622
const roleColumn = escape.columnName('role');
17-
const scopesColumn = escape.columnName('scopes');
1823

1924
const apiKeysWithRoles = await runQuery<ApiKeyWithRole[]>(
2025
`SELECT ${userApiKeysTable}.${idColumn} AS id, ${userTable}.${roleColumn} AS role FROM ${userApiKeysTable} JOIN ${userTable} ON ${userTable}.${idColumn} = ${userApiKeysTable}.${userIdColumn}`,
2126
);
2227

2328
for (const { id, role } of apiKeysWithRoles) {
24-
const scopes = JSON.stringify(getApiKeyScopesForRole(role));
25-
26-
await runQuery(
27-
`UPDATE ${userApiKeysTable} SET ${scopesColumn} = '${scopes}' WHERE ${idColumn} = "${id}"`,
28-
);
29+
const scopes = getApiKeyScopesForRole(role);
30+
await queryRunner.manager.update(ApiKey, { id }, { scopes });
2931
}
3032
}
3133

0 commit comments

Comments
 (0)