https://github.com/wanted-wecode-subjects/eight-percent-subject
요구사항
@GetUser 데코레이터로 user에 대한 정보를 받아서 account 서비스에 넘긴 뒤 account를 생성하였는데 실제 테이블에 들어가서 확인해보니 NULL값으로 되어 있었습니다.
즉, foreign key가 제대로 입력되지 않았습니다.
그래서 jwtStrategy로 가서 user에 대한 정보를 모두 리턴하였습니다.
jwt.strategy.ts
async validate(payload: any) {
const { user_id, loginedAt } = payload;
const user = await this.usersService.findOneByUserId(user_id);
const tokenLoginedAt = new Date(loginedAt).getTime();
const userLoginedAt = new Date(user.loginedAt).getTime();
if (tokenLoginedAt !== userLoginedAt) {
throw new UnauthorizedException('올바르지 않은 토큰입니다');
}
return { ...user };
}
이후 테이블로 가서 확인해보니 해당 데이터가 입력되었습니다.
하지만 쓸데없는 정보나 보안상 이슈가 될 수 있는 비밀번호 같은 데이터가 들어가 논란이 생길 수 있었습니다.
그래서 기존에 줘야하던 정보(user_id, loginedAt) 이외에 user의 id 값을 넘겨보았습니다.
async validate(payload: any) {
const { user_id, loginedAt } = payload;
const user = await this.usersService.findOneByUserId(user_id);
const tokenLoginedAt = new Date(loginedAt).getTime();
const userLoginedAt = new Date(user.loginedAt).getTime();
if (tokenLoginedAt !== userLoginedAt) {
throw new UnauthorizedException('올바르지 않은 토큰입니다');
}
return { id: user.id, user_id, loginedAt };
}
이후 account를 생성한 뒤 테이블을 확인한 결과, 해당 row에 foreign key가 입력이 된 것을 확인할 수 있었습니다.