Files
sodalive-backend-spring-boot/docs/20260305_관리자사용자차단기능추가.md

3.6 KiB

  • 관리자 차단 신규 API/DTO/서비스 파일 생성
  • 차단 처리 시 탈퇴 이유 저장 및 회원 비활성화 처리
  • 차단 처리 시 Redis 로그인 토큰 전체 삭제
  • 본인인증 회원 BlockAuth 기록 처리
  • 동일 본인인증 정보 계정 일괄 탈퇴 처리
  • 활성 계정 조회 조건을 name + birth + di + uniqueCi로 강화
  • 관리자 차단 서비스 테스트 추가
  • 정적 진단 및 테스트/빌드 검증

검증 기록

1차 구현

  • 무엇을: kr.co.vividnext.sodalive.admin.member 패키지에 신규 관리자 차단 API(AdminMemberBlockController), 요청 DTO(AdminMemberBlockRequest), 서비스(AdminMemberBlockService)를 추가했다. 서비스에서 탈퇴 이유 저장/회원 비활성화, Redis 로그인 토큰 전체 삭제, 본인인증 정보 BlockAuth 기록을 순서대로 처리하고, 서비스 단위 테스트(AdminMemberBlockServiceTest)를 추가했다.
  • 왜: 관리자 페이지에서 사용자 차단 시 계정 비활성화 이력, 세션 무효화, 본인인증 기반 재가입 차단 정보를 한 번의 동작으로 일관되게 처리하기 위해서다.
  • 어떻게:
    • 정적 진단: lsp_diagnostics로 수정한 Kotlin 파일 진단을 시도했으나, 실행 환경에 Kotlin LSP가 설정되어 있지 않아 수행 불가(도구 에러 확인).
    • 테스트: ./gradlew test --tests kr.co.vividnext.sodalive.admin.member.AdminMemberBlockServiceTest 실행, BUILD SUCCESSFUL 확인.
    • 빌드: ./gradlew build -x test 실행, BUILD SUCCESSFUL 확인.

2차 수정

  • 무엇을: 관리자 차단 시 차단 대상 회원의 본인인증 정보(di)와 동일한 활성 계정을 모두 조회해 일괄 탈퇴 처리하도록 AdminMemberBlockService를 수정했다. 각 대상 계정마다 탈퇴 사유(SignOut) 저장, 회원 비활성화, Redis 로그인 토큰 전체 삭제를 수행하고, 기존 BlockAuth 저장 로직은 유지했다. 테스트도 동일 본인인증 다계정 탈퇴 시나리오를 포함하도록 확장했다.
  • 왜: 본인인증 정보를 공유하는 다중 계정을 관리자 차단 시 함께 정리해야 우회 가입 계정이 활성 상태로 남지 않기 때문이다.
  • 어떻게:
    • 정적 진단: lsp_diagnostics로 수정한 Kotlin 파일 진단을 시도했으나, 실행 환경에 Kotlin LSP가 설정되어 있지 않아 수행 불가(도구 에러 확인).
    • 테스트: ./gradlew test --tests kr.co.vividnext.sodalive.admin.member.AdminMemberBlockServiceTest 실행, BUILD SUCCESSFUL 확인.
    • 빌드: ./gradlew build -x test 실행, BUILD SUCCESSFUL 확인.

3차 수정

  • 무엇을: 활성 계정 조회 조건을 di 단일 조건에서 name + birth + di + uniqueCi AND 조건으로 강화했다. 이를 위해 AuthRepository의 활성 계정 조회 메서드를 getActiveMemberIdsByNameAndBirthAndDiAndUniqueCi(...)로 변경하고, 호출부인 AdminMemberBlockService, AuthService.authenticate를 모두 신규 메서드로 교체했다. AdminMemberBlockServiceTest도 신규 시그니처 기준으로 스텁/검증을 수정했다.
  • 왜: di만으로 동일인을 판단하면 과매칭 리스크가 있어, 본인인증 핵심 식별 속성을 함께 사용해 활성 계정 판별 정확도를 높이기 위해서다.
  • 어떻게:
    • 정적 진단: lsp_diagnostics로 수정한 Kotlin 파일 진단을 시도했으나, 실행 환경에 Kotlin LSP가 설정되어 있지 않아 수행 불가(도구 에러 확인).
    • 테스트: ./gradlew test 실행, BUILD SUCCESSFUL 확인.
    • 빌드: ./gradlew build -x test 실행, BUILD SUCCESSFUL 확인.