diff --git a/packages/nocodb-nest/src/modules/users/users.controller.ts b/packages/nocodb-nest/src/modules/users/users.controller.ts index db36ba465a..090eb4ffd0 100644 --- a/packages/nocodb-nest/src/modules/users/users.controller.ts +++ b/packages/nocodb-nest/src/modules/users/users.controller.ts @@ -113,6 +113,15 @@ export class UsersController { return this.usersService.login(req.user); } + @Post([ + '/api/v1/auth/user/signout', + ]) + @UseGuards(AuthGuard('local')) + @HttpCode(200) + async signout(@Request() req, @Response() res) { + return this.usersService.signout({req, res}); + } + @Post(`/auth/google/genTokenByCode`) @HttpCode(200) async googleSignin(req, res, next) { diff --git a/packages/nocodb-nest/src/modules/users/users.service.ts b/packages/nocodb-nest/src/modules/users/users.service.ts index 20550eb9cb..394eb39322 100644 --- a/packages/nocodb-nest/src/modules/users/users.service.ts +++ b/packages/nocodb-nest/src/modules/users/users.service.ts @@ -481,4 +481,22 @@ export class UsersService { token: genJwt(user, Noco.getConfig()), //this.jwtService.sign(payload), }; } + + async signout(param: { + req: any, + res: any, + }) { + 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); + } + } }