fix(auth): 활성 계정 조회 조건을 본인인증 식별 조합으로 강화한다
This commit is contained in:
@@ -15,7 +15,7 @@ interface AuthQueryRepository {
|
|||||||
fun getMemberIdsByDi(di: String): List<Long>
|
fun getMemberIdsByDi(di: String): List<Long>
|
||||||
fun getMemberIdsByNameAndBirthAndDiAndGender(name: String, birth: String, di: String, gender: Int): List<Long>
|
fun getMemberIdsByNameAndBirthAndDiAndGender(name: String, birth: String, di: String, gender: Int): List<Long>
|
||||||
fun getAuthIdByMemberId(memberId: Long): Long?
|
fun getAuthIdByMemberId(memberId: Long): Long?
|
||||||
fun getActiveMemberIdsByDi(di: String): List<Long>
|
fun getActiveMemberIdsByNameAndBirthAndDiAndUniqueCi(name: String, birth: String, di: String, uniqueCi: String): List<Long>
|
||||||
}
|
}
|
||||||
|
|
||||||
class AuthQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AuthQueryRepository {
|
class AuthQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AuthQueryRepository {
|
||||||
@@ -60,13 +60,21 @@ class AuthQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AuthQ
|
|||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getActiveMemberIdsByDi(di: String): List<Long> {
|
override fun getActiveMemberIdsByNameAndBirthAndDiAndUniqueCi(
|
||||||
|
name: String,
|
||||||
|
birth: String,
|
||||||
|
di: String,
|
||||||
|
uniqueCi: String
|
||||||
|
): List<Long> {
|
||||||
return queryFactory
|
return queryFactory
|
||||||
.select(member.id)
|
.select(member.id)
|
||||||
.from(member)
|
.from(member)
|
||||||
.leftJoin(member.auth, auth)
|
.leftJoin(member.auth, auth)
|
||||||
.where(
|
.where(
|
||||||
auth.di.eq(di)
|
auth.name.eq(name)
|
||||||
|
.and(auth.birth.eq(birth))
|
||||||
|
.and(auth.di.eq(di))
|
||||||
|
.and(auth.uniqueCi.eq(uniqueCi))
|
||||||
.and(member.isActive.isTrue)
|
.and(member.isActive.isTrue)
|
||||||
)
|
)
|
||||||
.fetch()
|
.fetch()
|
||||||
|
|||||||
@@ -81,7 +81,12 @@ class AuthService(
|
|||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
fun authenticate(certificate: AuthVerifyCertificate, memberId: Long): AuthResponse {
|
fun authenticate(certificate: AuthVerifyCertificate, memberId: Long): AuthResponse {
|
||||||
val memberIds = repository.getActiveMemberIdsByDi(di = certificate.di)
|
val memberIds = repository.getActiveMemberIdsByNameAndBirthAndDiAndUniqueCi(
|
||||||
|
name = certificate.name,
|
||||||
|
birth = certificate.birth,
|
||||||
|
di = certificate.di,
|
||||||
|
uniqueCi = certificate.unique
|
||||||
|
)
|
||||||
if (memberIds.size >= 3) {
|
if (memberIds.size >= 3) {
|
||||||
val message = messageSource.getMessage("member.auth.max_accounts", langContext.lang) ?: ""
|
val message = messageSource.getMessage("member.auth.max_accounts", langContext.lang) ?: ""
|
||||||
throw SodaException(
|
throw SodaException(
|
||||||
|
|||||||
Reference in New Issue
Block a user