유저 검색

- 권한이 유저인 경우 타 유저가 검색 되지 않도록 수정(크리에이터만 검색)
This commit is contained in:
Klaus 2023-11-20 12:24:15 +09:00
parent 5a75972f26
commit 8718089483
3 changed files with 17 additions and 13 deletions

View File

@ -165,7 +165,7 @@ class MemberController(private val service: MemberService) {
) = run {
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
ApiResponse.ok(service.searchMember(nickname = nickname, memberId = member.id!!))
ApiResponse.ok(service.searchMember(nickname = nickname, member = member))
}
@PostMapping("/sign_out")

View File

@ -23,7 +23,7 @@ interface MemberRepository : JpaRepository<Member, Long>, MemberQueryRepository
interface MemberQueryRepository {
fun findByPushToken(pushToken: String): List<Member>
fun findByNicknameAndOtherCondition(nickname: String, memberId: Long): List<Member>
fun findByNicknameAndOtherCondition(nickname: String, member: Member): List<Member>
fun findCreatorByIdOrNull(memberId: Long): Member?
fun getAllRecipientPushTokens(isAuth: Boolean, container: String): List<List<String>>
fun getCreateLiveRoomNotificationRecipientPushTokens(
@ -66,15 +66,19 @@ class MemberQueryRepositoryImpl(
.fetch()
}
override fun findByNicknameAndOtherCondition(nickname: String, memberId: Long): List<Member> {
override fun findByNicknameAndOtherCondition(nickname: String, member: Member): List<Member> {
var where = QMember.member.nickname.containsIgnoreCase(nickname)
.and(QMember.member.id.ne(member.id))
.and(QMember.member.role.ne(MemberRole.ADMIN))
.and(QMember.member.role.ne(MemberRole.AGENT))
if (member.role == MemberRole.USER) {
where = where.and(QMember.member.role.ne(MemberRole.USER))
}
return queryFactory
.selectFrom(member)
.where(
member.nickname.containsIgnoreCase(nickname)
.and(member.id.ne(memberId))
.and(member.role.ne(MemberRole.ADMIN))
.and(member.role.ne(MemberRole.AGENT))
)
.selectFrom(QMember.member)
.where(where)
.fetch()
}

View File

@ -382,14 +382,14 @@ class MemberService(
fun isBlocked(blockedMemberId: Long, memberId: Long) = blockMemberRepository.isBlocked(blockedMemberId, memberId)
fun searchMember(nickname: String, memberId: Long): List<GetRoomDetailUser> {
fun searchMember(nickname: String, member: Member): List<GetRoomDetailUser> {
if (nickname.length < 2) {
throw SodaException("두 글자 이상 입력 하셔야 합니다.")
}
return repository.findByNicknameAndOtherCondition(nickname, memberId)
return repository.findByNicknameAndOtherCondition(nickname, member)
.asSequence()
.filter { !blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = it.id!!) }
.filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.id!!) }
.map {
GetRoomDetailUser(it, cloudFrontHost)
}