diff --git a/src/main/java/com/example/springhw31/controller/UserController.java b/src/main/java/com/example/springhw31/controller/UserController.java index 7eca68b..ca577aa 100644 --- a/src/main/java/com/example/springhw31/controller/UserController.java +++ b/src/main/java/com/example/springhw31/controller/UserController.java @@ -1,16 +1,27 @@ package com.example.springhw31.controller; import com.example.springhw31.dto.UserDto; -import org.springframework.web.bind.annotation.ModelAttribute; +import com.example.springhw31.service.UserService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; /** * 회원가입 메서드처럼 UserDto를 파라미터로 받아주세요 */ +@RestController +@RequiredArgsConstructor public class UserController { + private final UserService userService; - public UserDto join(@ModelAttribute UserDto userDto) { + @PostMapping("/signup") + public UserDto signup(@ModelAttribute UserDto userDto) { + return userService.signup(userDto); + } + @GetMapping("/signin") + public String signin(@ModelAttribute UserDto userDto) { + return userService.signin(userDto); } } diff --git a/src/main/java/com/example/springhw31/dto/UserDto.java b/src/main/java/com/example/springhw31/dto/UserDto.java index 0cb0926..6a6b793 100644 --- a/src/main/java/com/example/springhw31/dto/UserDto.java +++ b/src/main/java/com/example/springhw31/dto/UserDto.java @@ -11,9 +11,6 @@ public class UserDto { private String username; - private String password; - private String nickname; - } diff --git a/src/main/java/com/example/springhw31/entity/User.java b/src/main/java/com/example/springhw31/entity/User.java index 4e957cc..e7186f7 100644 --- a/src/main/java/com/example/springhw31/entity/User.java +++ b/src/main/java/com/example/springhw31/entity/User.java @@ -1,14 +1,27 @@ package com.example.springhw31.entity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + /** * TODO: 완성된 코드 아닙니다~ */ +@Entity +@Getter +@Setter public class User { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + @Column(nullable = false, unique = true) private String username; + @Column(nullable = false) private String password; + @Column(nullable = false, unique = true) private String nickname; } diff --git a/src/main/java/com/example/springhw31/repository/UserRepository.java b/src/main/java/com/example/springhw31/repository/UserRepository.java index 53778ec..7a2a3e5 100644 --- a/src/main/java/com/example/springhw31/repository/UserRepository.java +++ b/src/main/java/com/example/springhw31/repository/UserRepository.java @@ -1,5 +1,10 @@ package com.example.springhw31.repository; -public class UserRepository { +import org.springframework.data.jpa.repository.JpaRepository; +import com.example.springhw31.entity.User; +import java.util.Optional; + +public interface UserRepository extends JpaRepository { + Optional findByUsername(String username); } diff --git a/src/main/java/com/example/springhw31/service/UserService.java b/src/main/java/com/example/springhw31/service/UserService.java index c3e8928..5820fa8 100644 --- a/src/main/java/com/example/springhw31/service/UserService.java +++ b/src/main/java/com/example/springhw31/service/UserService.java @@ -1,14 +1,46 @@ package com.example.springhw31.service; import com.example.springhw31.dto.UserDto; +import com.example.springhw31.entity.User; +import com.example.springhw31.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.NoSuchElementException; /** * Controller에 반환할 때도 DTO 객체를 반환합니다. */ + +@Service +@RequiredArgsConstructor public class UserService { - public UserDto join(UserDto userDto) { + private final UserRepository userRepository; + //회원가입 로직 + //아이디, 비밀번호, 닉네임은 null 불가(@Column 사용) + //아이디 또는 닉네님이 중복된 경우 회원가입불가 + public UserDto signup(UserDto userDto) { + User user = new User(); + user.setUsername(userDto.getUsername()); + user.setPassword(userDto.getPassword()); + user.setNickname(userDto.getNickname()); + userRepository.save(user); + return userDto; } + //로그인 로직 + //로그인 성공 시 “{회원 닉네임} 님, 환영합니다!!” 라는 문자열 출력 + //로그인 실패 시 “아이디 및 비밀번호가 일치하지 않습니다.” 문자열 출력 + public String signin(UserDto userDto) { + User user = userRepository.findByUsername(userDto.getUsername()) + .orElseThrow(() -> new NoSuchElementException("해당 유저가 없습니다.")); + + if(user.getPassword().equals(userDto.getPassword())){ + return user.getNickname() + "님 환영합니다.!!"; + }else{ + return "비밀번호가 일치하지 않습니다."; + } + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9b78d0c..5f39bc2 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,8 +1,8 @@ spring: datasource: - url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 - username: your_username - password: your_password + url: jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 + username: root + password: na58745874@ driver-class-name: com.mysql.cj.jdbc.Driver jpa: