From 68b7d5a23fd87ed763e07697ed99132be2b92baa Mon Sep 17 00:00:00 2001 From: Geonhee Min Date: Mon, 3 Nov 2025 06:31:39 +0000 Subject: [PATCH] =?UTF-8?q?issue=20#=20UserService=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduler/service/user/UserService.java | 39 ++++++++++++++++++- .../utils/validation/BaseValidation.java | 20 +++++++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/baekyangdan/scheduler/service/user/UserService.java b/src/main/java/com/baekyangdan/scheduler/service/user/UserService.java index a32774a..dfe636d 100644 --- a/src/main/java/com/baekyangdan/scheduler/service/user/UserService.java +++ b/src/main/java/com/baekyangdan/scheduler/service/user/UserService.java @@ -1,8 +1,45 @@ package com.baekyangdan.scheduler.service.user; +import com.baekyangdan.scheduler.repository.user.UserRepository; +import com.baekyangdan.scheduler.request.user.UserRequest; +import com.baekyangdan.scheduler.utils.converter.PasswordConverter; +import com.baekyangdan.scheduler.utils.validation.UserValidation; + import org.springframework.stereotype.Service; +import java.time.LocalDateTime; + @Service public class UserService { - + private final UserRepository userRepository; + private final PasswordConverter passwordConverter; + + public UserService(UserRepository userRepository, passwordConverter passwordConverter) { + this.userRepository = userRepository; + this.passwordConverter = passwordConverter; + } + + // 회원가입 로직 + public UserEntity signUp(UserRequest.SignUp data) throws Exception { + // 1. 요청받은 데이터가 회원가입 양식을 준수하는지 검사한다. + // 1-1. 회원가입 양식에 맞지 않는 데이터가 있을 경우, validateSignUpForm 함수 내에서 예외를 던져 함수 동작 중단 + UserValidation.validateSignUpForm(data); + + // 2. data 안의 평문 비밀번호 암호화 + String encodedPassword = passwordConverter.encode(data.getPassword()); + + // 3. data 를 UserEntity 형식으로 build + UserEntity user = UserEntity + .builder() + .id(data.getId()) + .email(data.getEmail()) + .name(data.getName()) + .nickname(data.getNickname()) + .password(encodedPassword) + .createdAt(LocalDateTime.now()) + .build(); + + // 4. build 된 entity를 UserRepository.save 로 DB에 저장 + return userRepositry.save(user); + } } diff --git a/src/main/java/com/baekyangdan/scheduler/utils/validation/BaseValidation.java b/src/main/java/com/baekyangdan/scheduler/utils/validation/BaseValidation.java index f4cd567..30b97ee 100644 --- a/src/main/java/com/baekyangdan/scheduler/utils/validation/BaseValidation.java +++ b/src/main/java/com/baekyangdan/scheduler/utils/validation/BaseValidation.java @@ -1,7 +1,25 @@ package com.baekyangdan.scheduler.utils.validation; +import jaav.util.regex.Pattern; +import java.util.regex.Matcher; + public class BaseValidation { - private String emailRegExp = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,}$" + private final Pattern emailPattern = Pattern.compile("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,}$"); + private final Pattern phoneNumberPattern = Pattern.compile("^010-\d{4}-\d{4}$"); + + protected static boolean matchEmailPattern(String email) { + if (validateStringEmpty()) { + return false; + } + return emailPattern.matcher(email); + } + + protected static boolean matchPhoneNumberPattern(String phoneNumber) { + if (validateStringEmpty()) { + return false; + } + return phoneNumberPattern.matcher(phoneNumber); + } protected static boolean validateStringEmpty(String value) { if (value == null) {