Browse Source

fix: invalidate all refresh token and populate a new token for current session on password change

Signed-off-by: Pranav C <pranavxc@gmail.com>
pull/9176/head
Pranav C 4 months ago
parent
commit
7795f0405d
  1. 5
      packages/nocodb/src/modules/auth/auth.controller.ts
  2. 3
      packages/nocodb/src/services/users/users.service.ts

5
packages/nocodb/src/modules/auth/auth.controller.ts

@ -140,7 +140,7 @@ export class AuthController {
scope: 'org', scope: 'org',
}) })
@HttpCode(200) @HttpCode(200)
async passwordChange(@Req() req: NcRequest): Promise<any> { async passwordChange(@Req() req: NcRequest, @Res() res): Promise<any> {
if (!(req as any).isAuthenticated?.()) { if (!(req as any).isAuthenticated?.()) {
NcError.forbidden('Not allowed'); NcError.forbidden('Not allowed');
} }
@ -151,6 +151,9 @@ export class AuthController {
body: req.body, body: req.body,
}); });
// set new refresh token
await this.setRefreshToken({ req, res });
return { msg: 'Password has been updated successfully' }; return { msg: 'Password has been updated successfully' };
} }

3
packages/nocodb/src/services/users/users.service.ts

@ -201,6 +201,9 @@ export class UsersService {
token_version: randomTokenString(), token_version: randomTokenString(),
}); });
// delete all refresh token and populate a new one
await UserRefreshToken.deleteAllUserToken(user.id);
this.appHooksService.emit(AppEvents.USER_PASSWORD_CHANGE, { this.appHooksService.emit(AppEvents.USER_PASSWORD_CHANGE, {
user: user, user: user,
ip: param.req?.clientIp, ip: param.req?.clientIp,

Loading…
Cancel
Save