Merge pull request 'fix(admin): 크리에이터 관리자 로그아웃 AGENT 권한을 허용한다' (#424) from test into main
Reviewed-on: #424
This commit is contained in:
21
docs/20260508_크리에이터관리자로그아웃AGENT권한허용.md
Normal file
21
docs/20260508_크리에이터관리자로그아웃AGENT권한허용.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# 크리에이터 관리자 로그아웃 AGENT 권한 허용
|
||||
|
||||
## 목표
|
||||
- `/creator-admin/member/logout` 엔드포인트를 `CREATOR`뿐 아니라 `AGENT` 권한 계정도 사용할 수 있게 한다.
|
||||
- 로그인 로직이 이미 `CREATOR`, `AGENT`를 허용하는 기존 정책과 로그아웃 권한 조건을 맞춘다.
|
||||
|
||||
## 구현 항목
|
||||
- [x] `CreatorAdminMemberController`의 `logout` 권한 조건에 `AGENT`를 추가한다.
|
||||
- [x] `logout` 권한 조건이 `CREATOR`, `AGENT`를 모두 포함하는지 테스트로 검증한다.
|
||||
- [x] 변경 파일 진단과 대상 테스트를 실행한다.
|
||||
|
||||
## 검증 계획
|
||||
- `./gradlew test --tests "kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberControllerTest"`
|
||||
- `lsp_diagnostics`로 변경 Kotlin 파일 오류 확인
|
||||
|
||||
## 검증 기록
|
||||
- `./gradlew test --tests "kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberControllerTest"`를 먼저 실행해 `hasRole('CREATOR')` 상태에서 실패함을 확인했다.
|
||||
- `CreatorAdminMemberController.logout`의 `@PreAuthorize`를 `hasAnyRole('CREATOR', 'AGENT')`로 변경했다.
|
||||
- 동일한 대상 테스트를 `--rerun-tasks`로 재실행해 `BUILD SUCCESSFUL`을 확인했다.
|
||||
- `lsp_diagnostics`는 Kotlin(`.kt`) LSP 서버가 설정되어 있지 않아 실행할 수 없었다. Gradle 테스트 과정에서 Kotlin 컴파일과 테스트 컴파일은 정상 통과했다.
|
||||
- 테스트 실행 중 기존 파일 `ImageBlurUtil.kt`의 미사용 파라미터 경고가 표시됐으며, 이번 변경 범위와는 무관해 수정하지 않았다.
|
||||
@@ -19,7 +19,7 @@ class CreatorAdminMemberController(private val service: CreatorAdminMemberServic
|
||||
fun login(@RequestBody loginRequest: LoginRequest) = service.login(loginRequest)
|
||||
|
||||
@PostMapping("/logout")
|
||||
@PreAuthorize("hasRole('CREATOR')")
|
||||
@PreAuthorize("hasAnyRole('CREATOR', 'AGENT')")
|
||||
fun logout(
|
||||
@RequestHeader("Authorization") token: String,
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package kr.co.vividnext.sodalive.creator.admin.member
|
||||
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.security.access.prepost.PreAuthorize
|
||||
|
||||
class CreatorAdminMemberControllerTest {
|
||||
@Test
|
||||
@DisplayName("로그아웃은 크리에이터와 에이전트 권한을 허용한다")
|
||||
fun shouldAllowCreatorAndAgentRolesForLogout() {
|
||||
val logout = CreatorAdminMemberController::class.java.getDeclaredMethod(
|
||||
"logout",
|
||||
String::class.java,
|
||||
Member::class.java
|
||||
)
|
||||
|
||||
val preAuthorize = logout.getAnnotation(PreAuthorize::class.java)
|
||||
|
||||
assertEquals("hasAnyRole('CREATOR', 'AGENT')", preAuthorize.value)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user