diff --git a/src/main/java/com/example/demo/controller/LoginController.java b/src/main/java/com/example/demo/controller/LoginController.java
index 7961482..4e469fc 100644
--- a/src/main/java/com/example/demo/controller/LoginController.java
+++ b/src/main/java/com/example/demo/controller/LoginController.java
@@ -1,24 +1,79 @@
package com.example.demo.controller;
+import jakarta.servlet.http.HttpSession;
+import jakarta.validation.Valid;
+
import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
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.entity.AccountEntity;
+import com.example.demo.form.LoginForm;
+import com.example.demo.service.LoginService;
+
+import lombok.RequiredArgsConstructor;
+
@Controller
+@RequiredArgsConstructor
public class LoginController {
- @GetMapping("/login")
- public String showLogin() {
- return "login";
- }
+ private final LoginService loginService;
- @PostMapping("/doLogin")
- public String doLogin() {
- return "redirect:/topmenu";
- }
+ // Boot起動直後にログイン画面に移動する用のメソッド
+ @GetMapping("/")
+ public String index(HttpSession session) {
+ if (session.getAttribute("loginEmployee") != null) {
+ return "redirect:/topmenu";
+ }
+ return "redirect:/login";
+ }
- @GetMapping("/topmenu")
- public String showTopMenu() {
- return "topmenu";
- }
+ @GetMapping("/login")
+ public String loginForm(Model model, HttpSession session) {
+ if (session.getAttribute("loginEmployee") != null) {
+ return "redirect:/topmenu";
+ }
+
+ model.addAttribute("loginForm", new LoginForm());
+ return "login";
+ }
+
+ // 実際のログイン処理
+ @PostMapping("/login")
+ public String doLogin(
+ @Valid @ModelAttribute LoginForm loginForm,
+ BindingResult bindingResult,
+ Model model,
+ HttpSession session) {
+
+ if (bindingResult.hasErrors()) {
+ return "login";
+ }
+
+ AccountEntity accountEntity = loginService.login(loginForm);
+ if (accountEntity == null) {
+ model.addAttribute("loginError",
+ "ログインIDまたはパスワードが正しくありません");
+ return "login";
+ }
+
+ session.setAttribute("loginEmployee", accountEntity);
+ return "redirect:/topmenu";
+ }
+
+ // ログアウト処理
+ @GetMapping("/logout")
+ public String logout(HttpSession session) {
+ session.invalidate();
+ return "redirect:/login";
+ }
+
+ // 各画面からトップメニューへの遷移用
+ @GetMapping("/topmenu")
+ public String showTopMenu() {
+ return "topmenu";
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/entity/Account.java b/src/main/java/com/example/demo/entity/AccountEntity.java
similarity index 89%
rename from src/main/java/com/example/demo/entity/Account.java
rename to src/main/java/com/example/demo/entity/AccountEntity.java
index 6379036..fc90022 100644
--- a/src/main/java/com/example/demo/entity/Account.java
+++ b/src/main/java/com/example/demo/entity/AccountEntity.java
@@ -21,15 +21,15 @@ import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
-public class Account {
+public class AccountEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="login_info_id")
- private int loginInfoId;
+ private Integer loginInfoId;
@Column(name="employee_id")
- private int employeeId;
+ private Integer employeeId;
@Column(name="password_hash")
private String passwordHash;
diff --git a/src/main/java/com/example/demo/form/LoginForm.java b/src/main/java/com/example/demo/form/LoginForm.java
new file mode 100644
index 0000000..2a5a7ab
--- /dev/null
+++ b/src/main/java/com/example/demo/form/LoginForm.java
@@ -0,0 +1,17 @@
+package com.example.demo.form;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+
+import lombok.Data;
+
+@Data
+public class LoginForm {
+
+ @NotNull(message = "社員IDを入力してください")
+ private Integer employeeId;
+
+ @NotBlank(message = "パスワードを入力してください")
+ private String passwordHash;
+
+}
diff --git a/src/main/java/com/example/demo/repository/AccountRepository.java b/src/main/java/com/example/demo/repository/AccountRepository.java
new file mode 100644
index 0000000..db7d155
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/AccountRepository.java
@@ -0,0 +1,11 @@
+package com.example.demo.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.example.demo.entity.AccountEntity;
+
+public interface AccountRepository extends JpaRepositoryログイン
-
+
\ No newline at end of file
diff --git a/src/main/resources/templates/topmenu.html b/src/main/resources/templates/topmenu.html
index 83c566d..2fff6ee 100644
--- a/src/main/resources/templates/topmenu.html
+++ b/src/main/resources/templates/topmenu.html
@@ -1,31 +1,55 @@
+
-
-
メインメニュー
-
-
+
+
-
+
-
+
寄贈申請
@@ -34,11 +58,11 @@
寄贈申請フォームの
入力を行います。
貸出中図書の
一覧を表示します。
-
初期パスワードを
変更します。