Skip to content

Commit

Permalink
refactor : 비밀번호 암호화 책임 변경
Browse files Browse the repository at this point in the history
기존 : 도메인 클래스에서 비밀번호 암호화 로직이 포함되어있었음
문제 : 비밀번호 암호화는 비즈니스 로직
변경 : 서비스 레이어에게 암호화 로직 책임 할당
  • Loading branch information
codesejin committed Feb 1, 2024
1 parent daabadd commit a9df453
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 16 deletions.
26 changes: 11 additions & 15 deletions src/main/java/com/flab/offcoupon/domain/Member.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.flab.offcoupon.domain;

import com.flab.offcoupon.controller.api.MemberMapperDTO;
import com.flab.offcoupon.util.bcrypt.BcryptPassword;
import jakarta.validation.constraints.NotBlank;
import lombok.*;
import org.springframework.data.annotation.Id;
Expand Down Expand Up @@ -37,24 +36,21 @@ public class Member {
@NotBlank
private LocalDate updatedAt;

@Builder
private Member(String email, String password, String name, String birthDate, String phone) {
this.email = email;
this.password = password;
this.name = name;
this.birthDate = birthDate;
this.phone = phone;
private Member(MemberMapperDTO memberMapperDTO) {
this.email = memberMapperDTO.getEmail();
this.password = memberMapperDTO.getPassword();
this.name = memberMapperDTO.getName();
this.birthDate = memberMapperDTO.getBirthDate();
this.phone = memberMapperDTO.getPhone();
this.createdAt = LocalDate.now();
this.updatedAt = LocalDate.now();
}

public static Member toEntity(MemberMapperDTO memberMapperDTO) {
return Member.builder()
.email(memberMapperDTO.getEmail())
.password(BcryptPassword.encrypt(memberMapperDTO.getPassword()))
.name(memberMapperDTO.getName())
.birthDate(memberMapperDTO.getBirthDate())
.phone(memberMapperDTO.getPhone())
.build();
return new Member(memberMapperDTO);
}

public void setPassword(String password) {
this.password = password;
}
}
7 changes: 7 additions & 0 deletions src/main/java/com/flab/offcoupon/service/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
import com.flab.offcoupon.exception.member.MemberBadRequestException;
import com.flab.offcoupon.repository.MemberMapperRepository;
import com.flab.offcoupon.util.ResponseDTO;
import com.flab.offcoupon.util.bcrypt.BcryptPassword;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;

import static com.flab.offcoupon.exception.ErrorMessage.DUPLICATED_EMAIL;
Expand All @@ -19,6 +21,7 @@ public class MemberService {
public ResponseDTO signUp(MemberMapperDTO memberMapperDTO) {
checkDuplicatedEmail(memberMapperDTO.getEmail());
Member entity = Member.toEntity(memberMapperDTO);
entity.setPassword(encryptPassword(memberMapperDTO.getPassword()));
memberMapperRepository.save(entity);
return ResponseDTO.getSuccessResult(memberMapperDTO);
}
Expand All @@ -29,4 +32,8 @@ private void checkDuplicatedEmail(String email) {
throw new MemberBadRequestException(DUPLICATED_EMAIL);
}
}

private String encryptPassword(String password) {
return BcryptPassword.encrypt(password);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public static String encrypt(String password) {
return BCrypt.hashpw(password,BCrypt.gensalt());
}

public static boolean decrypt(String password, String hashedPassword) {
public static boolean match(String password, String hashedPassword) {
return BCrypt.checkpw(password, hashedPassword);
}
}

0 comments on commit a9df453

Please sign in to comment.