diff --git a/src/models/creation/HandleLogout.ts b/src/models/creation/HandleLogout.ts index 5404f9b..f1527f3 100644 --- a/src/models/creation/HandleLogout.ts +++ b/src/models/creation/HandleLogout.ts @@ -1,7 +1,9 @@ import { IsString } from 'class-validator'; import * as jsonwebtoken from 'jsonwebtoken'; -import { IllegalJWTError, JwtNotProvidedError } from '../../errors/AuthError'; +import { getConnectionManager } from 'typeorm'; +import { IllegalJWTError, JwtNotProvidedError, RefreshTokenCountInvalidError, UserNotFoundError } from '../../errors/AuthError'; import { Logout } from '../entities/Logout'; +import { User } from '../entities/User'; export class HandleLogout { @IsString() @@ -12,7 +14,7 @@ export class HandleLogout { if (!this.token || this.token === undefined) { throw new JwtNotProvidedError() } - let decoded + let decoded; try { decoded = jsonwebtoken.verify(this.token, 'securekey') } catch (error) { @@ -20,14 +22,15 @@ export class HandleLogout { } logout.access_token = this.token logout.timestamp = Math.floor(Date.now() / 1000) - // const found_user = await getConnectionManager().get().getRepository(User).findOne({ id: decoded["userid"] }); - // if (!found_user) { - // throw new UserNotFoundError() - // } - // if (found_user.refreshTokenCount !== decoded["refreshtokencount"]) { - // throw new RefreshTokenCountInvalidError() - // } - // TODO: increment refreshtokencount WHERE userid===userid && refreshtokencount===refreshtokencount + let found_user: User = await getConnectionManager().get().getRepository(User).findOne({ id: decoded["userid"] }); + if (!found_user) { + throw new UserNotFoundError() + } + if (found_user.refreshTokenCount !== decoded["refreshtokencount"]) { + throw new RefreshTokenCountInvalidError() + } + found_user.refreshTokenCount++; + getConnectionManager().get().getRepository(User).update({ id: found_user.id }, found_user) return logout; } } \ No newline at end of file