fix(block-member): 양방향 차단 관계의 댓글·응원·콘텐츠 노출을 차단한다

This commit is contained in:
2026-02-23 14:08:23 +09:00
parent 07fb6202a8
commit cc74628107
28 changed files with 528 additions and 155 deletions

View File

@@ -524,6 +524,10 @@ class AudioContentService(
val creator = explorerQueryRepository.getMember(creatorId)
?: throw SodaException(messageKey = "content.error.user_not_found")
if (isBlockedBetweenMembers(memberId = member.id!!, creatorId = creatorId)) {
throw SodaException(messageKey = "content.error.invalid_content_retry")
}
val creatorFollowing = explorerQueryRepository.getCreatorFollowing(
creatorId = creatorId,
memberId = member.id!!
@@ -534,12 +538,6 @@ class AudioContentService(
contentId = audioContent.id!!
)
// 차단된 사용자 체크
val isBlocked = blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = creatorId)
if (isBlocked && !isExistsAudioContent) {
throw SodaException(formatMessage("content.error.access_restricted_by_creator", creator.nickname))
}
val orderSequence = if (isExistsAudioContent) {
limitedEditionOrderRepository.getOrderSequence(
contentId = audioContent.id!!,
@@ -886,6 +884,10 @@ class AudioContentService(
): GetAudioContentListItem? {
val isAdult = member.auth != null && isAdultContentVisible
if (isBlockedBetweenMembers(memberId = member.id!!, creatorId = creatorId)) {
return null
}
val audioContent = repository.findLatestContentByCreatorId(creatorId, isAdult) ?: return null
val commentCount = commentRepository
@@ -957,6 +959,10 @@ class AudioContentService(
val isAdult = member.auth != null && isAdultContentVisible
val isCreator = member.id == creatorId
if (!isCreator && isBlockedBetweenMembers(memberId = member.id!!, creatorId = creatorId)) {
return GetAudioContentListResponse(totalCount = 0, items = listOf())
}
val totalCount = repository.findTotalCountByCreatorId(
creatorId = creatorId,
isCreator = isCreator,
@@ -1313,8 +1319,8 @@ class AudioContentService(
}
}
private fun formatMessage(key: String, vararg args: Any): String {
val template = messageSource.getMessage(key, langContext.lang) ?: return ""
return String.format(template, *args)
private fun isBlockedBetweenMembers(memberId: Long, creatorId: Long): Boolean {
return blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = creatorId) ||
blockMemberRepository.isBlocked(blockedMemberId = creatorId, memberId = memberId)
}
}