From 1c8e6b97e66494e773502288f0dc0e61420530d9 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Sat, 29 Oct 2022 11:40:12 +0530 Subject: [PATCH] fix: clear all user related cache on user delete Signed-off-by: Pranav C --- packages/nc-gui/components/account/UserList.vue | 2 +- packages/nocodb/src/lib/meta/api/orgUserApis.ts | 1 - packages/nocodb/src/lib/models/User.ts | 9 +++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/nc-gui/components/account/UserList.vue b/packages/nc-gui/components/account/UserList.vue index 663ad1bdb0..f52340022d 100644 --- a/packages/nc-gui/components/account/UserList.vue +++ b/packages/nc-gui/components/account/UserList.vue @@ -249,7 +249,7 @@ const copyPasswordResetUrl = async (user: User) => { - +
{{ $t('activity.copyPasswordResetURL') }}
diff --git a/packages/nocodb/src/lib/meta/api/orgUserApis.ts b/packages/nocodb/src/lib/meta/api/orgUserApis.ts index 09d1972e58..e6f556e619 100644 --- a/packages/nocodb/src/lib/meta/api/orgUserApis.ts +++ b/packages/nocodb/src/lib/meta/api/orgUserApis.ts @@ -72,7 +72,6 @@ async function userDelete(req, res) { // delete user await User.delete(req.params.userId, ncMeta); - await User.delete(req.params.userId, ncMeta); await ncMeta.commit(); } catch (e) { await ncMeta.rollback(e); diff --git a/packages/nocodb/src/lib/models/User.ts b/packages/nocodb/src/lib/models/User.ts index b7b6a36403..e736f78724 100644 --- a/packages/nocodb/src/lib/models/User.ts +++ b/packages/nocodb/src/lib/models/User.ts @@ -225,8 +225,17 @@ export default class User implements UserType { static async delete(userId: string, ncMeta = Noco.ncMeta) { if (!userId) NcError.badRequest('userId is required'); + + const user = await this.get(userId, ncMeta); + + if (!user) NcError.badRequest('User not found'); + + // clear all user related cache await NocoCache.delAll(CacheScope.USER, `${userId}___*`); + await NocoCache.delAll(CacheScope.USER, `${user.email}___*`); await NocoCache.del(`${CacheScope.USER}:${userId}`); + await NocoCache.del(`${CacheScope.USER}:${user.email}`); + await ncMeta.metaDelete(null, null, MetaTable.USERS, userId); } }