Files
sodalive-backend-spring-boot/docs/20260507_콘텐츠관리자권한및관리자로그인API추가.md

2.3 KiB

콘텐츠 관리자 권한 및 관리자 로그인 API 추가

작업 항목

  • MemberRole에 콘텐츠 관리자 권한을 추가한다.
  • 관리자 로그인 API 테스트를 먼저 추가하고 RED를 확인한다.
  • 관리자와 콘텐츠 관리자만 로그인 가능한 관리자 전용 로그인 API를 구현한다.
  • 응답을 token, role만 포함하도록 구현한다.
  • focused test, 관련 테스트, 스타일 검사를 실행하고 결과를 기록한다.

설계

  • 새 권한은 기존 MemberRole enum에 CONTENT_MANAGER로 추가한다.
  • 새 API는 관리자 도메인의 /admin/member/login으로 추가하고 인증 없이 호출 가능하도록 보안 설정에 permitAll을 추가한다.
  • 서비스는 기존 이메일/비밀번호 인증 흐름과 JWT 생성 방식을 재사용하되, ADMIN, CONTENT_MANAGER 외 역할은 common.error.bad_credentials 예외로 거부한다.
  • 응답 DTO는 관리자 로그인 전용으로 분리해 token, role만 노출한다.

검증 기록

  • 2026-05-07: RED 확인: ./gradlew test --tests 'kr.co.vividnext.sodalive.admin.member.AdminMemberLoginServiceTest' --tests 'kr.co.vividnext.sodalive.admin.member.AdminMemberLoginControllerTest' 실행 시 AdminMemberLoginService, AdminMemberLoginController, AdminMemberLoginResponse, CONTENT_MANAGER, findByEmail 미구현으로 compileTestKotlin이 실패함을 확인했다.
  • 2026-05-07: GREEN 확인: 동일 focused test가 BUILD SUCCESSFUL로 통과해 관리자/콘텐츠 관리자 로그인 허용 및 일반 사용자 거부를 확인했다.
  • 2026-05-07: API 응답 확인: ./gradlew test --tests 'kr.co.vividnext.sodalive.admin.member.AdminMemberLoginControllerTest.shouldReturnTokenAndRoleJson'BUILD SUCCESSFUL로 통과해 POST /admin/member/login JSON 응답의 data.token, data.role을 확인했다.
  • 2026-05-07: 회귀 확인: ./gradlew test --tests 'kr.co.vividnext.sodalive.admin.member.*'BUILD SUCCESSFUL로 통과했다.
  • 2026-05-07: 스타일 확인: ./gradlew ktlintCheckBUILD SUCCESSFUL로 통과했다.
  • 2026-05-07: Kotlin LSP는 현재 환경에 .kt 서버가 설정되어 있지 않아 lsp_diagnostics 실행이 불가했다. 대신 Gradle 컴파일 포함 focused/관련 test와 ktlint로 검증했다.