From 09f451e7f61c5d326ca6fc0a860814ecbb120de0 Mon Sep 17 00:00:00 2001 From: s-ohasi <26-o-m-stella-tecnica@it-college.jp> Date: Thu, 22 Oct 2026 12:39:38 +0900 Subject: [PATCH] no message --- team1/pom.xml | 11 +- .../demo/controller/LendingController.java | 72 +++++----- .../demo/controller/LoginController.java | 133 +++++------------- .../demo/controller/LogoutController.java | 64 +++++++++ .../demo/controller/SelectBookController.java | 3 +- .../java/com/example/demo/form/LoginInfo.java | 24 ---- .../com/example/demo/form/LoginInfoForm.java | 22 +++ .../com/example/demo/form/LoginUserForm.java | 27 ++-- .../com/example/demo/model/LoginInfo.java | 13 ++ .../demo/repository/EmployeeRepository.java | 4 +- .../ApprovalBorrowBooksImpl.java | 13 +- .../com/example/demo/service/impl/Login.java | 11 ++ team1/src/main/resources/templates/login.html | 4 +- 13 files changed, 205 insertions(+), 196 deletions(-) create mode 100644 team1/src/main/java/com/example/demo/controller/LogoutController.java delete mode 100644 team1/src/main/java/com/example/demo/form/LoginInfo.java create mode 100644 team1/src/main/java/com/example/demo/form/LoginInfoForm.java create mode 100644 team1/src/main/java/com/example/demo/model/LoginInfo.java rename team1/src/main/java/com/example/demo/service/{Impl => impl}/ApprovalBorrowBooksImpl.java (81%) create mode 100644 team1/src/main/java/com/example/demo/service/impl/Login.java diff --git a/team1/pom.xml b/team1/pom.xml index 8b03b4f..d38cddb 100644 --- a/team1/pom.xml +++ b/team1/pom.xml @@ -74,16 +74,7 @@ spring-boot-starter-webmvc-test test - - com.example - HelloSpring - 0.0.1-SNAPSHOT - - - com.example.rhizome - EM-Spring - 0.0.1-SNAPSHOT - + diff --git a/team1/src/main/java/com/example/demo/controller/LendingController.java b/team1/src/main/java/com/example/demo/controller/LendingController.java index ab7ea82..8703362 100644 --- a/team1/src/main/java/com/example/demo/controller/LendingController.java +++ b/team1/src/main/java/com/example/demo/controller/LendingController.java @@ -1,4 +1,4 @@ -package com.example.demo.controller; +/*package com.example.demo.controller; import java.util.logging.Level; import java.util.logging.Logger; @@ -18,7 +18,7 @@ import main.java.com.example.rhizome.app.presentation.controller.pageproperty.Tr /** * 書籍貸出申請に関する処理を制御するコントローラ */ -@Controller +/*@Controller public class LendingController { // ログ出力用インスタンス private final static Logger LOGGER = Logger.getLogger(LendingController.class.getName()); @@ -34,35 +34,35 @@ public class LendingController { } //画面を開くための初期化(!formクラス名要確認!) - @ModelAttribute - public LendingForm lendingForm() { - return new LendingForm(); - } +// @ModelAttribute +// public LendingForm lendingForm() { +// return new LendingForm(); +// } - @PermissionCheck - @SessionCheck - @RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) - public String confirmLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { - try { +// @PermissionCheck +// @SessionCheck +// @RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) +// public String confirmLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { +// try { // HTML側の th:object="${lendingForm}" に渡すデータをセット - model.addAllAttribute("lendingForm", lendingForm); +// model.addAllAttribute("lendingForm", lendingForm); // 貸出申請確認画面のHTML名を返す - return "applicationConform"; - } catch (Exception e) { +// return "applicationConform"; +// } catch (Exception e) { //ログイン情報の破棄 - httpSession.invalidate(); +// httpSession.invalidate(); - e.printStackTrace(); +// e.printStackTrace(); // エラーログ出力 - LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); +// LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); // エラー画面遷移 - return TransitionTargetPageNameKeyword.ERROR_HTML; +// return TransitionTargetPageNameKeyword.ERROR_HTML; - } - - } +// } + +// } /** * 書籍貸出申請 実行処理 @@ -71,24 +71,24 @@ public class LendingController { * @param model ビューにデータを渡すためのコンテナ * @return 遷移先の画面 */ - @PermissionCheck - @SessionCheck - @RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) - public String executeLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { - final String LENDING_COMPLETE = "書籍申請完了しました"; - try + //@PermissionCheck + //@SessionCheck + //@RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) + //public String executeLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { + //final String LENDING_COMPLETE = "書籍申請完了しました"; + //try - { + //{ - } catch (Exception e) { + //} catch (Exception e) { // ログイン情報の破棄 - httpSession.invalidate(); - e.printStackTrace(); + //httpSession.invalidate(); + //e.printStackTrace(); // エラーログ出力 - LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); + //LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); // エラー画面遷移 - return TransitionTargetPageNameKeyword.ERROR_HTML; - } - } -} + //return TransitionTargetPageNameKeyword.ERROR_HTML; + //} + //} +//} diff --git a/team1/src/main/java/com/example/demo/controller/LoginController.java b/team1/src/main/java/com/example/demo/controller/LoginController.java index e337659..23fc734 100644 --- a/team1/src/main/java/com/example/demo/controller/LoginController.java +++ b/team1/src/main/java/com/example/demo/controller/LoginController.java @@ -1,6 +1,5 @@ package com.example.demo.controller; -import java.util.logging.Level; import java.util.logging.Logger; import jakarta.servlet.http.HttpSession; @@ -9,128 +8,70 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.PostMapping; -import com.example.demo.form.LoginInfo; -import com.example.demo.form.LoginInfo.LoginInfoForm; +import com.example.demo.form.LoginInfoForm; import com.example.demo.form.LoginUserForm; import com.example.demo.form.MessageForm; +import com.example.demo.service.impl.Login; @Controller public class LoginController { - // - private final static Logger LOGGER = Logger.getLogger(LoginController.class.getName()); + // // ログ出力用インスタンス + private static final Logger LOGGER = Logger.getLogger(LoginController.class.getName()); - // - private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; - - HttpSession httpSession; - Login login; + // ログイン処理を行う + private final Login login; + // コンストラクタで部品を注入する(Autowired) @Autowired - public LoginController(HttpSession httpSession, Login login) { - this.httpSession = httpSession; + public LoginController(Login login) { this.login = login; } + // 画面で使うフォームの初期化 @ModelAttribute public LoginUserForm loginUserForm() { return new LoginUserForm(); } - /** - * 画面から渡ってきたパラメータのチェックを行う - * - * @param loginInfoForm mailAddress, password を保持したインスタンス - * @param model ビューにデータを渡すためのコンテナ - * @return 遷移先の画面 - */ - @RequestMapping(value = DO_LOGIN, method = RequestMethod.POST) - public String doLogin(LoginInfoForm loginInfoForm, Model model) { - - // ログに出力する - final String MAIL_ADDRESS_PASSWORD_ERROR = "メールアドレス、パスワードの入力内容に誤りがあります"; - // 発生しうるErrorに対するメッセージ - final String LOGIN_ERROR = "IDまたはパスワードが間違っています"; + // ログインボタンが押されたときの処理 + @PostMapping("/doLogin") + public String doLogin(LoginInfoForm loginInfoForm, HttpSession session, Model model) { try { - // mailAddress, password の入力に誤りがあるかチェック + // 入力チェック(メールアドレスやパスワードの形が正しいか) if (!LoginUserForm.checkParameter(loginInfoForm)) { - - // mail,passwordが仕様を満たしていない場合 - model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, - new MessageForm(MAIL_ADDRESS_PASSWORD_ERROR)); - - // エラーだった場合に login.html に処理を戻す。mailAddress, password を login.htmlに表示するために - // ここで addAttribute する - model.addAttribute(PageReturnAttributeKeyword.LOGIN_INFO_FORM, loginInfoForm); - // login.html に遷移する様に設定 - return TransitionTargetPageNameKeyword.LOGIN_HTML; + // エラーメッセージと、入力されたデータを画面に返す + model.addAttribute("messageError", new MessageForm("メールアドレス、パスワードの入力内容に誤りがあります")); + model.addAttribute("loginInfoForm", loginInfoForm); + return "login"; // login.html を表示 } - // Login者情報インスタンスを作成 - LoginInfo loginInfo = createLoginInfo(httpSession, loginInfoForm); - // login 可能かチェック - if (!login.canLogin(loginInfo)) { - // ログイン不可の場合、エラーメッセージをセットして入力された値とともに login.html を再表示 - // 画面に表示するエラーメッセージをセット - model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(LOGIN_ERROR)); - // 画面に表示する mailAddress, password をセット - model.addAttribute(PageReturnAttributeKeyword.LOGIN_INFO_FORM, loginInfoForm); - // login.html に遷移 - return TransitionTargetPageNameKeyword.LOGIN_HTML; + // 認証チェック(IDとパスワードが一致するか) + if (!login.canLogin(loginInfoForm)) { + // 間違っている場合のメッセージを画面に返す + model.addAttribute("messageError", new MessageForm("IDまたはパスワードが間違っています")); + model.addAttribute("loginInfoForm", loginInfoForm); + return "login"; // login.html を表示 } - // ログイン(インスタンス作成) - LoginUser loginUser = login.doLogin(loginInfo); - // ログイン者の情報をセッション情報に格納 - // セッションに loginUser 情報を保持し続ける = ログイン中として扱う - httpSession.setAttribute(SessionKeyword.LOGIN_USER, LoginUserForm.convertFrom(loginUser)); + // ログイン処理の実行 + LoginUser loginUser = login.doLogin(loginInfoForm); - // 管理者かチェック - if (!loginUser.isAdminUser()) { - // 管理者ではない場合直で自分の情報を更新するページに遷移する - // 編集対象のログイン者の情報を画面に渡す値にセット - model.addAttribute(PageReturnAttributeKeyword.UPDATE_PERSONAL_EMPLOYEE_USER_FORM, - UpdatePersonalUserForm.convertFrom(loginUser)); - // 個人の情報更新ページに遷移 - return TransitionTargetPageNameKeyword.UPDATE_PERSONAL_EMPLOYEE_INPUT_HTML; - } - // メニュー画面に遷移 - return TransitionTargetPageNameKeyword.MENU_HTML; + // セッション(サーバーの秘密のメモ帳)にユーザー情報を保存 + //「ログイン中」の状態 + session.setAttribute("loginUser", LoginUserForm.convertFrom(loginUser)); + + // 成功したらメニュー画面へ進む + return "menu"; // menu.html を表示 } catch (Exception e) { - // ログイン情報の破棄 - httpSession.invalidate(); - e.printStackTrace(); - // エラーログ出力 - LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); - // エラー画面に遷移 - return TransitionTargetPageNameKeyword.ERROR_HTML; + // 予期せぬエラーが起きたら、セッションを消してエラー画面へ + session.invalidate(); + LOGGER.error("エラーが発生しました!", e); + return "error"; // error.html を表示 } } - - /** - * ログイン者情報のインスタンスを作成 - * - * @param httpSession セッション情報 - * @param loginInfoForm mailAddress, password を保持したインスタンス - */ - private static LoginInfo createLoginInfo(HttpSession httpSession, LoginInfoForm loginInfoForm) { - // セッションからログイン者情報を取得 - LoginUserForm loginUserForm = (LoginUserForm) httpSession.getAttribute(SessionKeyword.LOGIN_USER); - - // セッションにログイン者情報があるか - if (loginUserForm != null) { - // セッションにログイン者情報がある場合 - return new LoginInfo(loginUserForm.getMailAddress(), loginUserForm.getPassword()); - } - - // セッションにない場合は画面からの input 値 を取得 - return new LoginInfo( - loginInfoForm.getMailAddress(), - loginInfoForm.getPassword()); - } -} +} \ No newline at end of file diff --git a/team1/src/main/java/com/example/demo/controller/LogoutController.java b/team1/src/main/java/com/example/demo/controller/LogoutController.java new file mode 100644 index 0000000..5484dc2 --- /dev/null +++ b/team1/src/main/java/com/example/demo/controller/LogoutController.java @@ -0,0 +1,64 @@ +package com.example.demo.controller; + +import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import jakarta.servlet.http.HttpSession; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import com.example.rhizome.aop.aspect.PermissionCheck; +import com.example.rhizome.aop.aspect.SessionCheck; +import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword; +import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword; +import com.example.rhizome.app.presentation.form.LoginUserForm; + +@Controller +public class LogoutController { + // ログ出力用インスタンス + private final static Logger LOGGER = Logger.getLogger(LogoutController.class.getName()); + // エラーメッセージ用の定数フィールド + private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; + + HttpSession httpSession; + + @Autowired + public LogoutController(HttpSession httpSession) { + this.httpSession = httpSession; + } + + @ModelAttribute + public LoginUserForm loginUserForm() { + return new LoginUserForm(); + } + + @PermissionCheck + @SessionCheck + @RequestMapping(value = LOGOUT, method = RequestMethod.POST) + public String doLogout(Model model) { + try { + // セッション情報の破棄 + httpSession.invalidate(); + + // ログイン画面に遷移するための情報を設定 + model.addAttribute(PageReturnAttributeKeyword.LOGIN_INFO_FORM, loginUserForm()); + // login.html に遷移 + return TransitionTargetPageNameKeyword.LOGIN_HTML; + + } catch (Exception e) { + + // エラーログ出力 + LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); + // エラーページに遷移 + return TransitionTargetPageNameKeyword.ERROR_HTML; + } + + } +} diff --git a/team1/src/main/java/com/example/demo/controller/SelectBookController.java b/team1/src/main/java/com/example/demo/controller/SelectBookController.java index 4fa733c..d974f0b 100644 --- a/team1/src/main/java/com/example/demo/controller/SelectBookController.java +++ b/team1/src/main/java/com/example/demo/controller/SelectBookController.java @@ -1,4 +1,4 @@ -package com.example.demo.controller; +/*package com.example.demo.controller; import java.util.List; @@ -75,3 +75,4 @@ public class SelectBookController { // } } +*/ \ No newline at end of file diff --git a/team1/src/main/java/com/example/demo/form/LoginInfo.java b/team1/src/main/java/com/example/demo/form/LoginInfo.java deleted file mode 100644 index 2e6dc0d..0000000 --- a/team1/src/main/java/com/example/demo/form/LoginInfo.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.example.demo.form; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -public class LoginInfo { - //ログインをする人 - @Data - @AllArgsConstructor - @NoArgsConstructor - public class LoginInfoForm { - /** - * メールアドレス - */ - private String mailAddress; - /** - * パスワード - */ - private String password; - - } - -} diff --git a/team1/src/main/java/com/example/demo/form/LoginInfoForm.java b/team1/src/main/java/com/example/demo/form/LoginInfoForm.java new file mode 100644 index 0000000..ec02f33 --- /dev/null +++ b/team1/src/main/java/com/example/demo/form/LoginInfoForm.java @@ -0,0 +1,22 @@ +package com.example.demo.form; + +//ログイン情報 +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor + +public class LoginInfoForm { + /** + * メールアドレス + */ + private String mailAddress; + /** + * パスワード + */ + private String password; + +} diff --git a/team1/src/main/java/com/example/demo/form/LoginUserForm.java b/team1/src/main/java/com/example/demo/form/LoginUserForm.java index 49feaa9..280677a 100644 --- a/team1/src/main/java/com/example/demo/form/LoginUserForm.java +++ b/team1/src/main/java/com/example/demo/form/LoginUserForm.java @@ -1,6 +1,6 @@ package com.example.demo.form; -import com.example.demo.form.LoginInfo.LoginInfoForm; +import com.example.rhizome.app.domain.model.LoginUser; import lombok.AllArgsConstructor; import lombok.Data; @@ -44,41 +44,30 @@ public class LoginUserForm { * @param loginUser business 層の LoginUser インスタンス * @return クラスから画面用(presentation 層)の LoginUserForm */ - public static LoginUserForm convertFrom(LoginUserForm loginUser) { + public static LoginUserForm convertFrom(LoginUser loginUser) { return new LoginUserForm( loginUser.getIdEmployee(), loginUser.getNmEmployee(), loginUser.getKnEmployee(), loginUser.getMailAddress(), loginUser.getPassword(), - loginUser.getFlgAdmin() + loginUser.getGetFlgadmin() ); } - /** - * 画面用(presentation 層)の LoginUserForm クラスから business 層の LoginUser クラスに - * 変換します。 - * - * @param loginUserForm 画面用(presentation 層)の LoginUserForm インスタンス - * @return business 層の LoginUser インスタンス - */ - public static LoginUserForm convertTo(LoginUserForm loginUserForm) { + + public static LoginUserForm convertTo(LoginUser loginUserForm) { return new LoginUserForm( loginUserForm.getIdEmployee(), loginUserForm.getNmEmployee(), loginUserForm.getKnEmployee(), loginUserForm.getMailAddress(), loginUserForm.getPassword(), - loginUserForm.getFlgAdmin() + loginUserForm.getGetFlgadmin() ); } - /** - * 画面から渡ってきた必須の値が仕様を満たしているか確認 - * - * @param loginInfoForm 画面から渡ってきた mailAddress, password を格納しているインスタンス - * @return true:仕様を満たしている , false:仕様を満たしていない - */ + public static boolean checkParameter(LoginInfoForm loginInfoForm) { if (null == loginInfoForm.getMailAddress()) { return false; @@ -102,6 +91,6 @@ public class LoginUserForm { * @return true:管理者権限を持っている , false:管理者権限を持っていない */ public boolean isAdminUser() { - return getFlgAdmin() == 1; + return getFlgadmin() == 1; } } diff --git a/team1/src/main/java/com/example/demo/model/LoginInfo.java b/team1/src/main/java/com/example/demo/model/LoginInfo.java new file mode 100644 index 0000000..21c3b8d --- /dev/null +++ b/team1/src/main/java/com/example/demo/model/LoginInfo.java @@ -0,0 +1,13 @@ +package com.example.demo.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +//ログインを試みる +@Getter +@AllArgsConstructor +public class LoginInfo { + private String maillAddress; + private String password; + +} diff --git a/team1/src/main/java/com/example/demo/repository/EmployeeRepository.java b/team1/src/main/java/com/example/demo/repository/EmployeeRepository.java index b273e3b..9761b26 100644 --- a/team1/src/main/java/com/example/demo/repository/EmployeeRepository.java +++ b/team1/src/main/java/com/example/demo/repository/EmployeeRepository.java @@ -1,7 +1,5 @@ package com.example.demo.repository; -import java.util.Optional; - import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,6 +7,6 @@ import com.example.demo.entity.EmployeeEntity; @Repository public interface EmployeeRepository extends JpaRepository { - Optional findByMailAddressAndPassword(String mailAddress, String password); + } \ No newline at end of file diff --git a/team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java b/team1/src/main/java/com/example/demo/service/impl/ApprovalBorrowBooksImpl.java similarity index 81% rename from team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java rename to team1/src/main/java/com/example/demo/service/impl/ApprovalBorrowBooksImpl.java index 65a96fe..b201c3d 100644 --- a/team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java +++ b/team1/src/main/java/com/example/demo/service/impl/ApprovalBorrowBooksImpl.java @@ -1,4 +1,4 @@ -package com.example.demo.service.Impl; +/*package com.example.demo.service.Impl; import java.util.List; @@ -23,9 +23,12 @@ public class ApprovalBorrowBooksImpl implements ApprovalBorrowBooks { /* 申請情報から全件取得 * @return 取得した情報すべて */ - public List selectAll() { - return ???Entity.create???List(???Repository.findAll()); - } + //public List selectAll() { + //return ???Entity.create???List(???Repository.findAll()); + //} -} \ No newline at end of file +//} +//package com; + + diff --git a/team1/src/main/java/com/example/demo/service/impl/Login.java b/team1/src/main/java/com/example/demo/service/impl/Login.java new file mode 100644 index 0000000..bd6c67b --- /dev/null +++ b/team1/src/main/java/com/example/demo/service/impl/Login.java @@ -0,0 +1,11 @@ +package com.example.demo.service.impl; + +import com.example.demo.form.LoginInfoForm; +import com.example.rhizome.app.domain.model.LoginUser; + +public interface Login { + LoginUser doLogin(LoginInfoForm loginInfo); + + boolean canLogin(LoginInfoForm loginInfo); + +} diff --git a/team1/src/main/resources/templates/login.html b/team1/src/main/resources/templates/login.html index 313e0be..2843a36 100644 --- a/team1/src/main/resources/templates/login.html +++ b/team1/src/main/resources/templates/login.html @@ -18,8 +18,8 @@ method="post" th:object="${loginInfoForm}"> -
? - ? +
+