From a51e6c8c29896e5da11b8eac3f43be5a10155af8 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Mon, 17 Oct 2022 21:47:50 +0530 Subject: [PATCH] feat(gui): add upgrader for updating role names Signed-off-by: Pranav C --- .../src/lib/version-upgrader/NcUpgrader.ts | 2 ++ .../ncProjectRolesUpgrader.ts | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 packages/nocodb/src/lib/version-upgrader/ncProjectRolesUpgrader.ts diff --git a/packages/nocodb/src/lib/version-upgrader/NcUpgrader.ts b/packages/nocodb/src/lib/version-upgrader/NcUpgrader.ts index 3fab1baf5e..2946253259 100644 --- a/packages/nocodb/src/lib/version-upgrader/NcUpgrader.ts +++ b/packages/nocodb/src/lib/version-upgrader/NcUpgrader.ts @@ -5,6 +5,7 @@ import NcMetaIO from '../meta/NcMetaIO'; import ncProjectEnvUpgrader from './ncProjectEnvUpgrader'; import ncProjectEnvUpgrader0011045 from './ncProjectEnvUpgrader0011045'; import ncProjectUpgraderV2_0090000 from './ncProjectUpgraderV2_0090000'; +import ncProjectRolesUpdate from './ncProjectRolesUpdate'; import ncDataTypesUpgrader from './ncDataTypesUpgrader'; const log = debug('nc:version-upgrader'); @@ -33,6 +34,7 @@ export default class NcUpgrader { { name: '0011045', handler: ncProjectEnvUpgrader0011045 }, { name: '0090000', handler: ncProjectUpgraderV2_0090000 }, { name: '0098004', handler: ncDataTypesUpgrader }, + { name: '0098005', handler: ncProjectRolesUpdate }, ]; if (!(await ctx.ncMeta.knexConnection?.schema?.hasTable?.('nc_store'))) { return; diff --git a/packages/nocodb/src/lib/version-upgrader/ncProjectRolesUpgrader.ts b/packages/nocodb/src/lib/version-upgrader/ncProjectRolesUpgrader.ts new file mode 100644 index 0000000000..17367ee2d5 --- /dev/null +++ b/packages/nocodb/src/lib/version-upgrader/ncProjectRolesUpgrader.ts @@ -0,0 +1,24 @@ +import { MetaTable } from '../utils/globals'; +import { NcUpgraderCtx } from './NcUpgrader'; + +/** Upgrader for upgrading roles */ +export default async function ({ ncMeta }: NcUpgraderCtx) { + const users = await ncMeta.metaList2(null, null, MetaTable.USERS); + + for (const user of users) { + user.roles = user.roles + .split(',') + .map((r) => { + if (r === 'user') { + return 'org-level-creator'; + } else if (r === 'user-new') { + return 'org-level-viewer'; + } + return r; + }) + .join(','); + await ncMeta.metaUpdate(null, null, MetaTable.USERS, user, { + roles: user.roles, + }); + } +}