issue # 회원 가입 로직 구현 중
This commit is contained in:
@@ -30,6 +30,7 @@ dependencies {
|
|||||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-security'
|
implementation 'org.springframework.boot:spring-boot-starter-security'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-mail'
|
implementation 'org.springframework.boot:spring-boot-starter-mail'
|
||||||
|
implementation 'com.google.auth:google-auth-library-oauth2-http:1.40.0'
|
||||||
compileOnly 'org.projectlombok:lombok'
|
compileOnly 'org.projectlombok:lombok'
|
||||||
developmentOnly 'org.springframework.boot:spring-boot-devtools'
|
developmentOnly 'org.springframework.boot:spring-boot-devtools'
|
||||||
runtimeOnly 'org.postgresql:postgresql'
|
runtimeOnly 'org.postgresql:postgresql'
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
package com.baekyangdan.scheduler.config;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|||||||
@@ -1,23 +1,42 @@
|
|||||||
package com.baekyangdan.scheduler.controller.user;
|
package com.baekyangdan.scheduler.controller.user;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
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.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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.request.user.UserRequest;
|
||||||
|
import com.baekyangdan.scheduler.service.user.UserService;
|
||||||
|
import com.baekyangdan.scheduler.utils.converter.PasswordConverter;
|
||||||
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/user")
|
@RequestMapping("/user")
|
||||||
public class UserController {
|
public class UserController {
|
||||||
|
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
public UserController(UserService userService) {
|
||||||
|
this.userService = userService;
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/signup")
|
@PostMapping("/signup")
|
||||||
public ResponseEntity<String> signUp(@RequestBody UserRequest.SignUp body) {
|
public ResponseEntity<String> signUp(@RequestBody UserRequest.SignUp body) {
|
||||||
System.out.println("test5");
|
try {
|
||||||
return new ResponseEntity<String>("테스트", HttpStatus.OK);
|
userService.signUp(body);
|
||||||
|
|
||||||
|
return new ResponseEntity<String> ("회원가입 완료", HttpStatus.OK);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
return new ResponseEntity<String> (e.getMessage(), HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.baekyangdan.scheduler.repository.user;
|
package com.baekyangdan.scheduler.repository.user;
|
||||||
|
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.Modifying;
|
import org.springframework.data.jpa.repository.Modifying;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
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.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.baekyangdan.scheduler.service.user;
|
package com.baekyangdan.scheduler.service.user;
|
||||||
|
|
||||||
|
import com.baekyangdan.scheduler.entity.user.UserEntity;
|
||||||
import com.baekyangdan.scheduler.repository.user.UserRepository;
|
import com.baekyangdan.scheduler.repository.user.UserRepository;
|
||||||
import com.baekyangdan.scheduler.request.user.UserRequest;
|
import com.baekyangdan.scheduler.request.user.UserRequest;
|
||||||
import com.baekyangdan.scheduler.utils.converter.PasswordConverter;
|
import com.baekyangdan.scheduler.utils.converter.PasswordConverter;
|
||||||
@@ -14,7 +15,7 @@ public class UserService {
|
|||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
private final PasswordConverter passwordConverter;
|
private final PasswordConverter passwordConverter;
|
||||||
|
|
||||||
public UserService(UserRepository userRepository, passwordConverter passwordConverter) {
|
public UserService(UserRepository userRepository, PasswordConverter passwordConverter) {
|
||||||
this.userRepository = userRepository;
|
this.userRepository = userRepository;
|
||||||
this.passwordConverter = passwordConverter;
|
this.passwordConverter = passwordConverter;
|
||||||
}
|
}
|
||||||
@@ -40,6 +41,6 @@ public class UserService {
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
// 4. build 된 entity를 UserRepository.save 로 DB에 저장
|
// 4. build 된 entity를 UserRepository.save 로 DB에 저장
|
||||||
return userRepositry.save(user);
|
return userRepository.save(user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class PasswordGenerator {
|
|||||||
|
|
||||||
Collections.shuffle(passwordCharacters, random);
|
Collections.shuffle(passwordCharacters, random);
|
||||||
|
|
||||||
StringBuilder sb = new StringBulilder(length);
|
StringBuilder sb = new StringBuilder(length);
|
||||||
|
|
||||||
for (char c : passwordCharacters) {
|
for (char c : passwordCharacters) {
|
||||||
sb.append(c);
|
sb.append(c);
|
||||||
|
|||||||
@@ -1,24 +1,23 @@
|
|||||||
package com.baekyangdan.scheduler.utils.validation;
|
package com.baekyangdan.scheduler.utils.validation;
|
||||||
|
|
||||||
import jaav.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.regex.Matcher;
|
|
||||||
|
|
||||||
public class BaseValidation {
|
public class BaseValidation {
|
||||||
private final Pattern emailPattern = Pattern.compile("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,}$");
|
private final static 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 phoneNumberPattern = Pattern.compile("^010-\\d{4}-\\d{4}$");
|
||||||
|
|
||||||
protected static boolean matchEmailPattern(String email) {
|
protected static boolean matchEmailPattern(String email) {
|
||||||
if (validateStringEmpty()) {
|
if (validateStringEmpty(email)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return emailPattern.matcher(email);
|
return emailPattern.matcher(email).matches();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static boolean matchPhoneNumberPattern(String phoneNumber) {
|
protected static boolean matchPhoneNumberPattern(String phoneNumber) {
|
||||||
if (validateStringEmpty()) {
|
if (validateStringEmpty(phoneNumber)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return phoneNumberPattern.matcher(phoneNumber);
|
return phoneNumberPattern.matcher(phoneNumber).matches();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static boolean validateStringEmpty(String value) {
|
protected static boolean validateStringEmpty(String value) {
|
||||||
|
|||||||
@@ -19,15 +19,15 @@ public class UserValidation extends BaseValidation {
|
|||||||
throw new Exception(SignUpValidationCode.EMAIL_EMPTY.getMessage());
|
throw new Exception(SignUpValidationCode.EMAIL_EMPTY.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validationStringEmpty(data.getPassword())) {
|
if (validateStringEmpty(data.getPassword())) {
|
||||||
throw new Exception(SignUpValidationCode.PASSWORD_EMPTY.getMessage());
|
throw new Exception(SignUpValidationCode.PASSWORD_EMPTY.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validationStringEmpty(data.getName())) {
|
if (validateStringEmpty(data.getName())) {
|
||||||
throw new Exception(SignUpValidationCode.NAME_EMPTY.getMessage());
|
throw new Exception(SignUpValidationCode.NAME_EMPTY.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validationStringEmpty(data.getNickname())) {
|
if (validateStringEmpty(data.getNickname())) {
|
||||||
throw new Exception(SignUpValidationCode.NICKNAME_EMPTY.getMessage());
|
throw new Exception(SignUpValidationCode.NICKNAME_EMPTY.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ spring.profiles.active=local
|
|||||||
|
|
||||||
spring.mail.host=smtp.google.com
|
spring.mail.host=smtp.google.com
|
||||||
spring.mail.port=587
|
spring.mail.port=587
|
||||||
spring.mail.username=baekyangdan@gmail.com
|
spring.mail.username=bkd.scheduler@gmail.com
|
||||||
spring.mail.protocol=smtp
|
spring.mail.protocol=smtp
|
||||||
|
|
||||||
spring.mail.clientId=688417162908-iqvnj4ceb8t1dkbjr70dtcafo27m8kqe.apps.googleusercontent.com
|
spring.mail.clientId=688417162908-iqvnj4ceb8t1dkbjr70dtcafo27m8kqe.apps.googleusercontent.com
|
||||||
|
|||||||
Reference in New Issue
Block a user