diff --git a/src/main/java/com/example/demo/app/domain/model/UserModel.java b/src/main/java/com/example/demo/app/domain/model/UserModel.java new file mode 100644 index 0000000..bb34609 --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/model/UserModel.java @@ -0,0 +1,25 @@ +package com.example.demo.app.domain.model; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class UserModel { + + private Long userId; + private String userName; + private String emailAddress; + private String password; + private Integer secretQuestionId; + private String secretAnswer; + private LocalDate brithDate; + private Integer saving; + private Integer annualIncome; + private Integer monthlyBudget; + private Integer goalId; + private Integer courseId; + private Integer deleteFlag; +} diff --git a/src/main/java/com/example/demo/app/domain/service/LoginService.java b/src/main/java/com/example/demo/app/domain/service/LoginService.java new file mode 100644 index 0000000..4908194 --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/LoginService.java @@ -0,0 +1,9 @@ +package com.example.demo.app.domain.service; + +import com.example.demo.app.infra.entity.UserEntity; + +public interface LoginService { + + UserEntity login(String mailAddress, String password); +} + diff --git a/src/main/java/com/example/demo/app/domain/service/impl/LoginServiceImpl.java b/src/main/java/com/example/demo/app/domain/service/impl/LoginServiceImpl.java new file mode 100644 index 0000000..ac41c21 --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/impl/LoginServiceImpl.java @@ -0,0 +1,25 @@ +package com.example.demo.app.domain.service.impl; + +import org.springframework.stereotype.Service; + +import com.example.demo.app.domain.service.LoginService; +import com.example.demo.app.infra.entity.UserEntity; +import com.example.demo.app.infra.repository.UserRepository; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class LoginServiceImpl implements LoginService { + + private final UserRepository userRepository; + + @Override + public UserEntity login(String mailAddress, String password) { + + return userRepository.findByMailAddressAndPassword( + mailAddress, + password).orElse(null); + } +} + diff --git a/src/main/java/com/example/demo/app/infra/entity/UserEntity.java b/src/main/java/com/example/demo/app/infra/entity/UserEntity.java index a6797ee..332fb61 100644 --- a/src/main/java/com/example/demo/app/infra/entity/UserEntity.java +++ b/src/main/java/com/example/demo/app/infra/entity/UserEntity.java @@ -20,7 +20,7 @@ import lombok.Data; import lombok.NoArgsConstructor; @Entity -@Table(name = "user") +@Table(name = "user_t") @Data @NoArgsConstructor @AllArgsConstructor @@ -59,10 +59,10 @@ public class UserEntity { private Integer deleteFlag; @OneToMany(mappedBy = "userEntity") - private List transactionEntity; + private List transactionEntityList; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "question_id") + @JoinColumn(name = "secret_question_id") private QuestionEntity questionEntity; @OneToOne(fetch = FetchType.LAZY) diff --git a/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java b/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java index 933aa4f..478a3c0 100644 --- a/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java +++ b/src/main/java/com/example/demo/app/infra/repository/TransactionRepository.java @@ -21,5 +21,6 @@ public interface TransactionRepository extends JpaRepository { + + Optional findByMailAddressAndPassword(String mailAddress, String password); +} + diff --git a/src/main/java/com/example/demo/app/presentation/controller/LoginController.java b/src/main/java/com/example/demo/app/presentation/controller/LoginController.java new file mode 100644 index 0000000..2e1439f --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/controller/LoginController.java @@ -0,0 +1,55 @@ +package com.example.demo.app.presentation.controller; + +import jakarta.servlet.http.HttpSession; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; + +import com.example.demo.app.domain.service.LoginService; +import com.example.demo.app.infra.entity.UserEntity; +import com.example.demo.app.presentation.form.LoginForm; + +import lombok.RequiredArgsConstructor; + +@Controller +@RequiredArgsConstructor +public class LoginController { + + private final LoginService loginService; + + @GetMapping("/login") + public String showLogin(Model model) { + + model.addAttribute( + "loginForm", + new LoginForm()); + + return "login"; + } + + @PostMapping("/login") + public String login( + @ModelAttribute LoginForm loginForm, + Model model, HttpSession session) { + + UserEntity loginUser = loginService.login( + loginForm.getMailAddress(), + loginForm.getPassword()); + + if (loginUser == null) { + model.addAttribute( + "errorMessage", + "Email address or password is incorrect."); + + return "login"; + } + + session.setAttribute("loginUser", loginUser); + + return "menu"; + } +} + diff --git a/src/main/java/com/example/demo/app/presentation/form/LoginForm.java b/src/main/java/com/example/demo/app/presentation/form/LoginForm.java new file mode 100644 index 0000000..c2f7a92 --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/form/LoginForm.java @@ -0,0 +1,15 @@ +package com.example.demo.app.presentation.form; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class LoginForm { + + private String mailAddress; + private String password; +} + diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html new file mode 100644 index 0000000..7050ca1 --- /dev/null +++ b/src/main/resources/templates/login.html @@ -0,0 +1,47 @@ + + + + +ログイン + + +
+ +
+

ログイン

+ +
+
+
+ + + +
+ +
+ + + +
+ +
+ +
+
+ + + + +
+ + \ No newline at end of file