implemented refreshcount increase

ref #12
This commit is contained in:
Nicolai Ort 2020-12-05 17:20:18 +01:00
parent 8c229dba82
commit 13d568ba3f
1 changed files with 13 additions and 10 deletions

View File

@ -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;
}
}