parent
8c229dba82
commit
13d568ba3f
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue