From cfb0e622ea35c3f1b20c011a143a8040e1a205cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=EA=B1=B4=ED=9D=AC?= Date: Mon, 3 Nov 2025 22:19:00 +0900 Subject: [PATCH] =?UTF-8?q?issue=20#=20=ED=9A=8C=EC=9B=90=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + .../scheduler/config/MailConfig.java | 2 ++ .../controller/user/UserController.java | 25 ++++++++++++++++--- .../repository/user/UserRepository.java | 3 +-- .../scheduler/service/user/UserService.java | 5 ++-- .../utils/generator/PasswordGenerator.java | 2 +- .../utils/validation/BaseValidation.java | 15 ++++++----- .../utils/validation/UserValidation.java | 6 ++--- src/main/resources/application.properties | 2 +- 9 files changed, 41 insertions(+), 20 deletions(-) diff --git a/build.gradle b/build.gradle index efe30fb..9d0b079 100644 --- a/build.gradle +++ b/build.gradle @@ -30,6 +30,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-mail' + implementation 'com.google.auth:google-auth-library-oauth2-http:1.40.0' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'org.postgresql:postgresql' diff --git a/src/main/java/com/baekyangdan/scheduler/config/MailConfig.java b/src/main/java/com/baekyangdan/scheduler/config/MailConfig.java index 02f008d..5fb3c5b 100644 --- a/src/main/java/com/baekyangdan/scheduler/config/MailConfig.java +++ b/src/main/java/com/baekyangdan/scheduler/config/MailConfig.java @@ -1,3 +1,5 @@ +package com.baekyangdan.scheduler.config; + import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import lombok.Getter; diff --git a/src/main/java/com/baekyangdan/scheduler/controller/user/UserController.java b/src/main/java/com/baekyangdan/scheduler/controller/user/UserController.java index 388e8c2..40bbfd3 100644 --- a/src/main/java/com/baekyangdan/scheduler/controller/user/UserController.java +++ b/src/main/java/com/baekyangdan/scheduler/controller/user/UserController.java @@ -1,23 +1,42 @@ package com.baekyangdan.scheduler.controller.user; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import com.baekyangdan.scheduler.repository.user.UserRepository; import com.baekyangdan.scheduler.request.user.UserRequest; +import com.baekyangdan.scheduler.service.user.UserService; +import com.baekyangdan.scheduler.utils.converter.PasswordConverter; @RestController @RequestMapping("/user") public class UserController { - + + private final UserService userService; + + public UserController(UserService userService) { + this.userService = userService; + } + @PostMapping("/signup") public ResponseEntity signUp(@RequestBody UserRequest.SignUp body) { - System.out.println("test5"); - return new ResponseEntity("테스트", HttpStatus.OK); + try { + userService.signUp(body); + + return new ResponseEntity ("회원가입 완료", HttpStatus.OK); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return new ResponseEntity (e.getMessage(), HttpStatus.BAD_REQUEST); + } + } } diff --git a/src/main/java/com/baekyangdan/scheduler/repository/user/UserRepository.java b/src/main/java/com/baekyangdan/scheduler/repository/user/UserRepository.java index 2dbfaff..c5b5595 100644 --- a/src/main/java/com/baekyangdan/scheduler/repository/user/UserRepository.java +++ b/src/main/java/com/baekyangdan/scheduler/repository/user/UserRepository.java @@ -1,12 +1,11 @@ package com.baekyangdan.scheduler.repository.user; - import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; -import org.springframework.data.jpa.repository.query.Param; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; 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 dfe636d..74dcb89 100644 --- a/src/main/java/com/baekyangdan/scheduler/service/user/UserService.java +++ b/src/main/java/com/baekyangdan/scheduler/service/user/UserService.java @@ -1,5 +1,6 @@ package com.baekyangdan.scheduler.service.user; +import com.baekyangdan.scheduler.entity.user.UserEntity; import com.baekyangdan.scheduler.repository.user.UserRepository; import com.baekyangdan.scheduler.request.user.UserRequest; import com.baekyangdan.scheduler.utils.converter.PasswordConverter; @@ -14,7 +15,7 @@ public class UserService { private final UserRepository userRepository; private final PasswordConverter passwordConverter; - public UserService(UserRepository userRepository, passwordConverter passwordConverter) { + public UserService(UserRepository userRepository, PasswordConverter passwordConverter) { this.userRepository = userRepository; this.passwordConverter = passwordConverter; } @@ -40,6 +41,6 @@ public class UserService { .build(); // 4. build 된 entity를 UserRepository.save 로 DB에 저장 - return userRepositry.save(user); + return userRepository.save(user); } } diff --git a/src/main/java/com/baekyangdan/scheduler/utils/generator/PasswordGenerator.java b/src/main/java/com/baekyangdan/scheduler/utils/generator/PasswordGenerator.java index 2b31f25..6b70c4e 100644 --- a/src/main/java/com/baekyangdan/scheduler/utils/generator/PasswordGenerator.java +++ b/src/main/java/com/baekyangdan/scheduler/utils/generator/PasswordGenerator.java @@ -30,7 +30,7 @@ public class PasswordGenerator { Collections.shuffle(passwordCharacters, random); - StringBuilder sb = new StringBulilder(length); + StringBuilder sb = new StringBuilder(length); for (char c : passwordCharacters) { sb.append(c); 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 30b97ee..1d02f84 100644 --- a/src/main/java/com/baekyangdan/scheduler/utils/validation/BaseValidation.java +++ b/src/main/java/com/baekyangdan/scheduler/utils/validation/BaseValidation.java @@ -1,24 +1,23 @@ package com.baekyangdan.scheduler.utils.validation; -import jaav.util.regex.Pattern; -import java.util.regex.Matcher; +import java.util.regex.Pattern; public class BaseValidation { - 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}$"); + private final static Pattern emailPattern = Pattern.compile("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,}$"); + private final static Pattern phoneNumberPattern = Pattern.compile("^010-\\d{4}-\\d{4}$"); protected static boolean matchEmailPattern(String email) { - if (validateStringEmpty()) { + if (validateStringEmpty(email)) { return false; } - return emailPattern.matcher(email); + return emailPattern.matcher(email).matches(); } protected static boolean matchPhoneNumberPattern(String phoneNumber) { - if (validateStringEmpty()) { + if (validateStringEmpty(phoneNumber)) { return false; } - return phoneNumberPattern.matcher(phoneNumber); + return phoneNumberPattern.matcher(phoneNumber).matches(); } protected static boolean validateStringEmpty(String value) { diff --git a/src/main/java/com/baekyangdan/scheduler/utils/validation/UserValidation.java b/src/main/java/com/baekyangdan/scheduler/utils/validation/UserValidation.java index 0e7fb46..b9053dc 100644 --- a/src/main/java/com/baekyangdan/scheduler/utils/validation/UserValidation.java +++ b/src/main/java/com/baekyangdan/scheduler/utils/validation/UserValidation.java @@ -19,15 +19,15 @@ public class UserValidation extends BaseValidation { throw new Exception(SignUpValidationCode.EMAIL_EMPTY.getMessage()); } - if (validationStringEmpty(data.getPassword())) { + if (validateStringEmpty(data.getPassword())) { throw new Exception(SignUpValidationCode.PASSWORD_EMPTY.getMessage()); } - if (validationStringEmpty(data.getName())) { + if (validateStringEmpty(data.getName())) { throw new Exception(SignUpValidationCode.NAME_EMPTY.getMessage()); } - if (validationStringEmpty(data.getNickname())) { + if (validateStringEmpty(data.getNickname())) { throw new Exception(SignUpValidationCode.NICKNAME_EMPTY.getMessage()); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index b297e13..a17aa23 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,7 +3,7 @@ spring.profiles.active=local spring.mail.host=smtp.google.com spring.mail.port=587 -spring.mail.username=baekyangdan@gmail.com +spring.mail.username=bkd.scheduler@gmail.com spring.mail.protocol=smtp spring.mail.clientId=688417162908-iqvnj4ceb8t1dkbjr70dtcafo27m8kqe.apps.googleusercontent.com