fix : 로그인 시 확인하던 인가(정지계정 유무) 로직 핸드쉐이크 시점으로 이동 #112
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
fix : 로그인 시 확인하던 인가(정지계정 유무) 로직 핸드쉐이크 시점으로 이동
📝 개요
일시정지/영구정지를 받은 계정은 로그인은 가능해야 하며, 게임 시작이 되지 않아야 한다. 는 규칙에 따라 로직을 변경했습니다.
⚙️ 구현 내용
1. 인가(정지계정 유무) 확인할 채널 인터셉터 생성
이전 코드에서는 핸드쉐이킹 시 jwt 토큰만 확인했지만, 인가용 채널을 하나 더 추가했습니다.
또한 기존 코드에서 해당 에러메시지는 AuthExceptionCode 에서 관리했지만, 의존성 문제로 인하여 SocketUserStatusExceptionCode 라는 enum 클래스를 새로 추가하였습니다.
2. SignInUseCase 로직 변경
기존 로직은 다음과 같이 진행됩니다.

여기서 validateLogin 함수와 findAndMarkUnreadWarning 함수는 다음과 같은 역할을 합니다.
validateLogin( )
findAndMarkUnreadWarning( )
사실상 유저가 일시 정지거나 영구 정지인 경우에서 유저의 최신 제재가 WARNING의 경우, validateLogin 함수에서 읽음처리 되기에 findAndMarkUnreadWarning 함수가 실행되지 않습니다.
즉 프론트는 올바른 값을 받지 않습니다.
이러한 문제를 해결하기 위해,
그리고 로그인 가능 여부 판단 기능을 인가 채널 인터셉터로 이동시킨 구조 변경과 맞추기 위해,
validateLogin() 메서드는 더 이상 필요하지 않아 삭제하였습니다.
📎 기타
🧪 테스트 결과
1. 소켓 접속 시 인가 확인 에러 반환 확인