Skip to content

Conversation

@jung-min-ju
Copy link
Contributor

@jung-min-ju jung-min-ju commented Nov 18, 2025

fix : 로그인 시 확인하던 인가(정지계정 유무) 로직 핸드쉐이크 시점으로 이동

📝 개요

일시정지/영구정지를 받은 계정은 로그인은 가능해야 하며, 게임 시작이 되지 않아야 한다. 는 규칙에 따라 로직을 변경했습니다.

⚙️ 구현 내용

1. 인가(정지계정 유무) 확인할 채널 인터셉터 생성

이전 코드에서는 핸드쉐이킹 시 jwt 토큰만 확인했지만, 인가용 채널을 하나 더 추가했습니다.

또한 기존 코드에서 해당 에러메시지는 AuthExceptionCode 에서 관리했지만, 의존성 문제로 인하여 SocketUserStatusExceptionCode 라는 enum 클래스를 새로 추가하였습니다.

image

2. SignInUseCase 로직 변경

기존 로직은 다음과 같이 진행됩니다.
image

여기서 validateLogin 함수와 findAndMarkUnreadWarning 함수는 다음과 같은 역할을 합니다.

validateLogin( )

  • 유저가 일시정지거나, 영구정지일 경우 유저의 가장 최신 제재(WARNING, 일시 정지, 영구 정지)를 찾아 읽음 표시 합니다.
  • 다른 로직 생략

findAndMarkUnreadWarning( )

  • 해당 유저의 WARNING 제재 중, 읽지 않은 가장 최근 제재 1개를 가져옵니다.
  • 해당 내역을 프론트에게 전달합니다.

사실상 유저가 일시 정지거나 영구 정지인 경우에서 유저의 최신 제재가 WARNING의 경우, validateLogin 함수에서 읽음처리 되기에 findAndMarkUnreadWarning 함수가 실행되지 않습니다.

즉 프론트는 올바른 값을 받지 않습니다.

이러한 문제를 해결하기 위해,
그리고 로그인 가능 여부 판단 기능을 인가 채널 인터셉터로 이동시킨 구조 변경과 맞추기 위해,

validateLogin() 메서드는 더 이상 필요하지 않아 삭제하였습니다.


📎 기타


🧪 테스트 결과

1. 소켓 접속 시 인가 확인 에러 반환 확인

image

@jung-min-ju jung-min-ju changed the title Fix/admin fix : 로그인 시 확인하던 인가(정지계정 유무) 로직 핸드쉐이크 시점으로 이동 Nov 18, 2025
@jung-min-ju jung-min-ju merged commit 5db8acd into develop Nov 18, 2025
1 check passed
@jung-min-ju jung-min-ju deleted the fix/admin branch November 18, 2025 06:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants