diff --git a/src/main/java/clap/server/adapter/outbound/persistense/MemberPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/MemberPersistenceAdapter.java index 5e670883..ca4f88f5 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/MemberPersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/MemberPersistenceAdapter.java @@ -43,6 +43,12 @@ public Optional findActiveMemberByNickname(final String nickname) { return memberEntity.map(memberPersistenceMapper::toDomain); } + @Override + public Optional findApprovalMemberByNickname(String nickname) { + Optional memberEntity = memberRepository.findApprovalRequestMemberByNickname(nickname); + return memberEntity.map(memberPersistenceMapper::toDomain); + } + @Override public List findReviewers() { List memberEntities = memberRepository.findByIsReviewerTrue(); diff --git a/src/main/java/clap/server/adapter/outbound/persistense/repository/member/MemberRepository.java b/src/main/java/clap/server/adapter/outbound/persistense/repository/member/MemberRepository.java index 813521a0..3f563567 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/repository/member/MemberRepository.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/repository/member/MemberRepository.java @@ -21,6 +21,9 @@ public interface MemberRepository extends JpaRepository, Me @Query("SELECT m FROM MemberEntity m WHERE m.nickname = :nickname AND m.status = 'ACTIVE'") Optional findActiveMemberByNickname(@Param("nickname") String nickname); + @Query("SELECT m FROM MemberEntity m WHERE m.nickname = :nickname AND m.status = 'APPROVAL_REQUEST'") + Optional findApprovalRequestMemberByNickname(@Param("nickname") String nickname); + List findByIsReviewerTrue(); List findAll(); // 전체 회원 조회 diff --git a/src/main/java/clap/server/application/port/outbound/member/LoadMemberPort.java b/src/main/java/clap/server/application/port/outbound/member/LoadMemberPort.java index d79baf83..10d072fb 100644 --- a/src/main/java/clap/server/application/port/outbound/member/LoadMemberPort.java +++ b/src/main/java/clap/server/application/port/outbound/member/LoadMemberPort.java @@ -23,6 +23,8 @@ public interface LoadMemberPort { Optional findActiveMemberByNickname(String nickname); + Optional findApprovalMemberByNickname(String nickname); + List findReviewers(); Page findAllMembers(Pageable pageable); diff --git a/src/main/java/clap/server/application/service/auth/AuthService.java b/src/main/java/clap/server/application/service/auth/AuthService.java index 53002230..d9b42a9f 100644 --- a/src/main/java/clap/server/application/service/auth/AuthService.java +++ b/src/main/java/clap/server/application/service/auth/AuthService.java @@ -36,7 +36,6 @@ class AuthService implements LoginUsecase, LogoutUsecase { @Override public LoginResponse login(String nickname, String password, String clientIp) { Member member = getMember(nickname,clientIp); - validatePassword(password, member.getPassword(), nickname, clientIp); if (member.getStatus().equals(MemberStatus.APPROVAL_REQUEST)) { @@ -69,11 +68,12 @@ private void deleteAccessToken(Long memberId, String accessToken) { } private Member getMember(String inputNickname, String clientIp) { - return loadMemberPort.findActiveMemberByNickname(inputNickname).orElseThrow(() -> - { - loginAttemptService.recordFailedAttempt(inputNickname, clientIp); - return new AuthException(AuthErrorCode.LOGIN_REQUEST_FAILED); - }); + return loadMemberPort.findActiveMemberByNickname(inputNickname) + .or(() -> loadMemberPort.findApprovalMemberByNickname(inputNickname)) + .orElseThrow(() -> { + loginAttemptService.recordFailedAttempt(inputNickname, clientIp); + return new AuthException(AuthErrorCode.LOGIN_REQUEST_FAILED); + }); } private void validatePassword(String inputPassword, String encodedPassword, String inputNickname, String clientIp) {