Skip to content

Commit

Permalink
♻️ #89 Refactor: 자체 로그인 부분 검증 로직 추가 (#117)
Browse files Browse the repository at this point in the history
#89 Refactor: - joinService에서 toMember(converter)사용함
- 재입력한 비밀번호 검증 로직 추가
- 비밀번호 유효성 검증 추가

Co-authored-by: woogieon8on <[email protected]>
  • Loading branch information
betgws and woogieon8on authored Sep 23, 2024
1 parent 02eee78 commit 88ebe57
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ public enum ErrorStatus implements BaseCode {
AUTH_REQUEST_BODY_NOT_FOUND(HttpStatus.BAD_REQUEST, "MEMBER4001", "Authentication Request Body를 읽지 못했습니다."),
USERNAME_NOT_FOUND(HttpStatus.BAD_REQUEST, "MEMBER4001", "유저 아이디가 없습니다."),
PASSWORD_NOT_FUND(HttpStatus.BAD_REQUEST, "MEMBER4001", "유저 비밀번호가 없습니다."),
PASSWORD_NOT_MATCH(HttpStatus.BAD_REQUEST,"MEMBER4001","재입력한 비밀번호와 일치하지 않습니다."),
PASSWORD_NOT_INVALID(HttpStatus.BAD_REQUEST,"MEMBER4001","유효하지않은 비밀번호입니다"),
MEMBER_ALREADY_EXIST(HttpStatus.BAD_REQUEST, "MEMBER4001", "이미 존재하는 아이디입니다."),

// Token Error
Expand Down
11 changes: 10 additions & 1 deletion src/main/java/com/drinkeg/drinkeg/converter/MemberConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@

@Component
public class MemberConverter {
public Member toMember(String username, Map<String, Object> claims) {

public Member toAppleMember(String username, Map<String, Object> claims) {
return Member.builder()
.username(username)
.email((String) claims.get("email")) // email 값을 claims에서 추출
Expand All @@ -25,4 +26,12 @@ public static MemberBasicInfoResponseDTO toMemberBasicInfoResponseDTO(Member mem
.email(member.getEmail())
.build();
}
public Member toMember(String username, String password, boolean isBoolean){
return Member.builder()
.username(username)
.password(password)
.role("ROLE_USER")
.isFirst(isBoolean)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ public class JoinDTO {

private String username;
private String password;
private String rePassword;
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public LoginResponseDTO appleLogin(AppleLoginRequestDTO appleLoginRequestDTO, Ht

if (existData.isEmpty()){

member = memberConverter.toMember(username, claims);
member = memberConverter.toAppleMember(username, claims);
memberRepository.save(member);
System.out.println("첫 로그인임");
jwtProvider(member, response);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.drinkeg.drinkeg.service.loginService;

import com.drinkeg.drinkeg.apipayLoad.code.status.ErrorStatus;
import com.drinkeg.drinkeg.converter.MemberConverter;
import com.drinkeg.drinkeg.domain.Member;
import com.drinkeg.drinkeg.dto.loginDTO.jwtDTO.JoinDTO;
import com.drinkeg.drinkeg.dto.loginDTO.commonDTO.MemberRequestDTO;
Expand All @@ -17,22 +18,25 @@ public class JoinService {

private final MemberRepository memberRepository;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
private final MemberConverter memberConverter;

public void join(JoinDTO joinDTO) {

String username = joinDTO.getUsername();
String password = joinDTO.getPassword();
String rePassword = joinDTO.getRePassword();

if (memberRepository.existsByUsername(username)) {
throw new GeneralException(ErrorStatus.MEMBER_ALREADY_EXIST);
}
if (!password.equals(rePassword)){
throw new GeneralException(ErrorStatus.PASSWORD_NOT_MATCH);
}
if(!isValidPassword(password)){
throw new GeneralException(ErrorStatus.PASSWORD_NOT_INVALID);
}

Member member = Member.builder()
.username(username)
.password(bCryptPasswordEncoder.encode(password))
.role("ROLE_USER")
.isFirst(true)
.build();
Member member = memberConverter.toMember(username,(bCryptPasswordEncoder.encode(password) ),true);

memberRepository.save(member);
}
Expand Down Expand Up @@ -85,4 +89,17 @@ public MemberResponseDTO addMemberDetail(MemberRequestDTO memberRequestDTO, Stri

return memberResponseDTO;
}

public boolean isValidPassword(String password) {

// 영문자, 숫자, 특수문자 각각에 대한 패턴
String letterPattern = ".*[A-Za-z].*";
String digitPattern = ".*\\d.*";

boolean hasLetter = password.matches(letterPattern);
boolean hasDigit = password.matches(digitPattern);

// 세 가지 조건이 모두 충족되는지 확인
return hasLetter && hasDigit;
}
}

0 comments on commit 88ebe57

Please sign in to comment.