token에서 user 정보를 추출하여, BE가 가지고 있는 user 정보와 토큰이 일치하면 새로운 토큰을 발급해 주는 요구사항이 있었다.
이에 대한 첫 번째 코드이다.
1. 유저 정보 추출
2. 유저 정보, 토큰 정보가 일치하는지 확인
2-1. 일치하지 않는다면 예외
2-2. 일치한다면 token, user 정보를 가진 entity 가져오기
3. 기존 refreshToken 제거하기
4. 새로운 token 발급하기
재발급 이라는 기능을 여러 작은 기능으로 구성했기 때문에 잘 나뉘어졌다고 생각을 했다.
또한, token 정보를 추출하여 유저 정보를 가져와! 라는 HOW로 표현하지 않았고,
유저 정보를 가져와(WHAT) 으로 표현을 했다.
아래는 변경된 코드이다.
아래와 같이 별도의 클래스로 분리한 이유는 무엇일까?
다시 한 번 생각해보자
재발급이 갖는 책임은 무엇일까?
재발급
1. 재발급 요청을 했을 때 사용한 기존의 토큰을 삭제하고
2. 새로운 토큰을 생성
이다.
하지만 첫 번재 코드는 위 2가지 책임 이외에 Token에서 유저 정보 추출하고,
실제로 해당 유저가 요청한 토큰을 가지고 있는지 체크하고 있다.
즉, 이는 로그인