From d60db3d7bbd3f8587aad8c56268256010c75ab07 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Thu, 13 Apr 2023 13:03:11 +0800 Subject: [PATCH] fix(nocodb): add signout function to clear refresh token --- .../nocodb/src/lib/controllers/user/user.ctl.ts | 10 ++++++++++ packages/nocodb/src/lib/services/user/index.ts | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/packages/nocodb/src/lib/controllers/user/user.ctl.ts b/packages/nocodb/src/lib/controllers/user/user.ctl.ts index c68ada72f7..6b4fee6bc9 100644 --- a/packages/nocodb/src/lib/controllers/user/user.ctl.ts +++ b/packages/nocodb/src/lib/controllers/user/user.ctl.ts @@ -98,6 +98,15 @@ async function signin(req, res, next) { )(req, res, next); } +async function signout(req: Request, res): Promise { + res.json( + await userService.signout({ + req, + res, + }) + ); +} + async function googleSignin(req, res, next) { passport.authenticate( 'google', @@ -246,6 +255,7 @@ const mapRoutes = (router) => { // new API router.post('/api/v1/auth/user/signup', catchError(signup)); router.post('/api/v1/auth/user/signin', catchError(signin)); + router.post('/api/v1/auth/user/signout', catchError(signout)); router.get( '/api/v1/auth/user/me', extractProjectIdAndAuthenticate, diff --git a/packages/nocodb/src/lib/services/user/index.ts b/packages/nocodb/src/lib/services/user/index.ts index 1afa86648e..508b35a1cd 100644 --- a/packages/nocodb/src/lib/services/user/index.ts +++ b/packages/nocodb/src/lib/services/user/index.ts @@ -458,5 +458,20 @@ export async function signup(param: { } as any; } +export async function signout(param: { req: any; res: any }): Promise { + try { + param.res.clearCookie('refresh_token'); + const user = (param.req as any).user; + if (user) { + await User.update(user.id, { + refresh_token: null, + }); + } + return { msg: 'Signed out successfully' }; + } catch (e) { + NcError.badRequest(e.message); + } +} + export * from './helpers'; export { default as initAdminFromEnv } from './initAdminFromEnv';