관리자 - 유저 비밀번호 초기화 기능 추가
This commit is contained in:
parent
57426b5b5b
commit
41fe37bdb2
|
@ -4,6 +4,7 @@ import kr.co.vividnext.sodalive.common.ApiResponse
|
|||
import org.springframework.data.domain.Pageable
|
||||
import org.springframework.security.access.prepost.PreAuthorize
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
import org.springframework.web.bind.annotation.PostMapping
|
||||
import org.springframework.web.bind.annotation.PutMapping
|
||||
import org.springframework.web.bind.annotation.RequestBody
|
||||
import org.springframework.web.bind.annotation.RequestMapping
|
||||
|
@ -14,6 +15,12 @@ import org.springframework.web.bind.annotation.RestController
|
|||
@RequestMapping("/admin/member")
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
class AdminMemberController(private val service: AdminMemberService) {
|
||||
@PostMapping("/password/reset")
|
||||
fun resetPassword(@RequestBody request: ResetPasswordRequest) = ApiResponse.ok(
|
||||
service.resetPassword(request = request),
|
||||
"비밀번호가 초기화 되었습니다."
|
||||
)
|
||||
|
||||
@PutMapping
|
||||
fun updateMember(@RequestBody request: UpdateMemberRequest) = ApiResponse.ok(
|
||||
service.updateMember(request = request),
|
||||
|
|
|
@ -15,6 +15,7 @@ interface AdminMemberQueryRepository {
|
|||
|
||||
fun searchMemberTotalCount(searchWord: String, role: MemberRole? = null): Int
|
||||
fun getCreatorAllList(): List<GetAdminCreatorAllListResponse>
|
||||
fun findByIdAndActive(memberId: Long): Member?
|
||||
}
|
||||
|
||||
class AdminMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AdminMemberQueryRepository {
|
||||
|
@ -109,4 +110,15 @@ class AdminMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory)
|
|||
)
|
||||
.fetch()
|
||||
}
|
||||
|
||||
override fun findByIdAndActive(memberId: Long): Member? {
|
||||
return queryFactory
|
||||
.selectFrom(member)
|
||||
.where(
|
||||
member.id.eq(memberId)
|
||||
.and(member.isActive.isTrue)
|
||||
)
|
||||
.orderBy(member.id.desc())
|
||||
.fetchFirst()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.member.MemberRole
|
|||
import org.springframework.beans.factory.annotation.Value
|
||||
import org.springframework.data.domain.Pageable
|
||||
import org.springframework.data.repository.findByIdOrNull
|
||||
import org.springframework.security.crypto.password.PasswordEncoder
|
||||
import org.springframework.stereotype.Service
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
import java.time.ZoneId
|
||||
|
@ -14,6 +15,7 @@ import java.time.format.DateTimeFormatter
|
|||
@Service
|
||||
class AdminMemberService(
|
||||
private val repository: AdminMemberRepository,
|
||||
private val passwordEncoder: PasswordEncoder,
|
||||
|
||||
@Value("\${cloud.aws.cloud-front.host}")
|
||||
private val cloudFrontHost: String
|
||||
|
@ -133,4 +135,12 @@ class AdminMemberService(
|
|||
fun getCreatorAllList(): List<GetAdminCreatorAllListResponse> {
|
||||
return repository.getCreatorAllList()
|
||||
}
|
||||
|
||||
@Transactional
|
||||
fun resetPassword(request: ResetPasswordRequest) {
|
||||
val member = repository.findByIdAndActive(memberId = request.memberId)
|
||||
?: throw SodaException("잘못된 회원정보입니다.\n다시 시도해 주세요.")
|
||||
|
||||
member.password = passwordEncoder.encode(member.email.split("@")[0])
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
package kr.co.vividnext.sodalive.admin.member
|
||||
|
||||
data class ResetPasswordRequest(val memberId: Long)
|
Loading…
Reference in New Issue