feat(member): AI 캐릭터 회원 로그인을 차단한다
This commit is contained in:
@@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.fcm.PushTokenService
|
|||||||
import kr.co.vividnext.sodalive.i18n.LangContext
|
import kr.co.vividnext.sodalive.i18n.LangContext
|
||||||
import kr.co.vividnext.sodalive.i18n.SodaMessageSource
|
import kr.co.vividnext.sodalive.i18n.SodaMessageSource
|
||||||
import kr.co.vividnext.sodalive.jwt.TokenProvider
|
import kr.co.vividnext.sodalive.jwt.TokenProvider
|
||||||
|
import kr.co.vividnext.sodalive.member.MemberKind
|
||||||
import kr.co.vividnext.sodalive.member.MemberRepository
|
import kr.co.vividnext.sodalive.member.MemberRepository
|
||||||
import kr.co.vividnext.sodalive.member.MemberRole
|
import kr.co.vividnext.sodalive.member.MemberRole
|
||||||
import kr.co.vividnext.sodalive.member.login.LoginRequest
|
import kr.co.vividnext.sodalive.member.login.LoginRequest
|
||||||
@@ -70,6 +71,10 @@ class CreatorAdminMemberService(
|
|||||||
throw SodaException(messageKey = "creator.admin.member.inactive_account")
|
throw SodaException(messageKey = "creator.admin.member.inactive_account")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (member.memberKind == MemberKind.AI_CHARACTER) {
|
||||||
|
throw SodaException(messageKey = "common.error.bad_credentials")
|
||||||
|
}
|
||||||
|
|
||||||
if (member.role != MemberRole.CREATOR && member.role != MemberRole.AGENT) {
|
if (member.role != MemberRole.CREATOR && member.role != MemberRole.AGENT) {
|
||||||
throw SodaException(messageKey = "common.error.bad_credentials")
|
throw SodaException(messageKey = "common.error.bad_credentials")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -339,6 +339,10 @@ class MemberService(
|
|||||||
throw SodaException(messageKey = "member.validation.inactive_account")
|
throw SodaException(messageKey = "member.validation.inactive_account")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (member.memberKind == MemberKind.AI_CHARACTER) {
|
||||||
|
throw SodaException(messageKey = "common.error.bad_credentials")
|
||||||
|
}
|
||||||
|
|
||||||
if (member.provider != MemberProvider.EMAIL) {
|
if (member.provider != MemberProvider.EMAIL) {
|
||||||
val provider = resolveProviderLabel(member.provider)
|
val provider = resolveProviderLabel(member.provider)
|
||||||
throw SodaException(message = formatMessage("member.validation.email_registered_with_provider", provider))
|
throw SodaException(message = formatMessage("member.validation.email_registered_with_provider", provider))
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package kr.co.vividnext.sodalive.creator.admin.member
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.common.SodaException
|
||||||
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
|
import kr.co.vividnext.sodalive.member.MemberKind
|
||||||
|
import kr.co.vividnext.sodalive.member.MemberRepository
|
||||||
|
import kr.co.vividnext.sodalive.member.MemberRole
|
||||||
|
import kr.co.vividnext.sodalive.member.login.LoginRequest
|
||||||
|
import kr.co.vividnext.sodalive.support.EmbeddedRedisInitializer
|
||||||
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
|
import org.junit.jupiter.api.Assertions.assertThrows
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest
|
||||||
|
import org.springframework.test.context.ContextConfiguration
|
||||||
|
import org.springframework.transaction.annotation.Transactional
|
||||||
|
import javax.persistence.EntityManager
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@Transactional
|
||||||
|
@ContextConfiguration(initializers = [EmbeddedRedisInitializer::class])
|
||||||
|
class CreatorAdminMemberServiceTest @Autowired constructor(
|
||||||
|
private val service: CreatorAdminMemberService,
|
||||||
|
private val memberRepository: MemberRepository,
|
||||||
|
private val entityManager: EntityManager
|
||||||
|
) {
|
||||||
|
@Test
|
||||||
|
@DisplayName("AI 캐릭터용 Member는 크리에이터 관리자 로그인할 수 없다")
|
||||||
|
fun shouldRejectAiCharacterMemberCreatorAdminLogin() {
|
||||||
|
val member = memberRepository.save(
|
||||||
|
Member(
|
||||||
|
email = "ai-character-creator-admin@test.com",
|
||||||
|
password = "",
|
||||||
|
nickname = "AI 캐릭터 관리자",
|
||||||
|
role = MemberRole.CREATOR,
|
||||||
|
memberKind = MemberKind.AI_CHARACTER
|
||||||
|
)
|
||||||
|
)
|
||||||
|
entityManager.flush()
|
||||||
|
entityManager.clear()
|
||||||
|
|
||||||
|
val exception = assertThrows(SodaException::class.java) {
|
||||||
|
service.login(LoginRequest(email = member.email!!, password = "password"))
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals("common.error.bad_credentials", exception.messageKey)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package kr.co.vividnext.sodalive.member
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.common.SodaException
|
||||||
|
import kr.co.vividnext.sodalive.member.login.LoginRequest
|
||||||
|
import kr.co.vividnext.sodalive.support.EmbeddedRedisInitializer
|
||||||
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
|
import org.junit.jupiter.api.Assertions.assertThrows
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest
|
||||||
|
import org.springframework.test.context.ContextConfiguration
|
||||||
|
import org.springframework.transaction.annotation.Transactional
|
||||||
|
import javax.persistence.EntityManager
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
@Transactional
|
||||||
|
@ContextConfiguration(initializers = [EmbeddedRedisInitializer::class])
|
||||||
|
class MemberServiceTest @Autowired constructor(
|
||||||
|
private val service: MemberService,
|
||||||
|
private val memberRepository: MemberRepository,
|
||||||
|
private val entityManager: EntityManager
|
||||||
|
) {
|
||||||
|
@Test
|
||||||
|
@DisplayName("AI 캐릭터용 Member는 일반 로그인할 수 없다")
|
||||||
|
fun shouldRejectAiCharacterMemberLoginBeforeAuthentication() {
|
||||||
|
val member = memberRepository.save(
|
||||||
|
Member(
|
||||||
|
email = "ai-character-login@test.com",
|
||||||
|
password = "",
|
||||||
|
nickname = "AI 캐릭터 로그인",
|
||||||
|
role = MemberRole.CREATOR,
|
||||||
|
memberKind = MemberKind.AI_CHARACTER
|
||||||
|
)
|
||||||
|
)
|
||||||
|
entityManager.flush()
|
||||||
|
entityManager.clear()
|
||||||
|
|
||||||
|
val exception = assertThrows(SodaException::class.java) {
|
||||||
|
service.login(LoginRequest(email = member.email!!, password = "password"))
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals("common.error.bad_credentials", exception.messageKey)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user