修正しました。
This commit is contained in:
@@ -7,13 +7,13 @@ 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.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
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;
|
||||
import com.example.demo.service.ReturnService;
|
||||
|
||||
@Controller
|
||||
public class LoginController {
|
||||
@@ -21,57 +21,42 @@ public class LoginController {
|
||||
// // ログ出力用インスタンス
|
||||
private static final Logger LOGGER = Logger.getLogger(LoginController.class.getName());
|
||||
|
||||
// ログイン処理を行う
|
||||
private final Login login;
|
||||
|
||||
// コンストラクタで部品を注入する(Autowired)
|
||||
@Autowired
|
||||
public LoginController(Login login) {
|
||||
this.login = login;
|
||||
}
|
||||
ReturnService service;
|
||||
|
||||
// 画面で使うフォームの初期化
|
||||
@ModelAttribute
|
||||
public LoginUserForm loginUserForm() {
|
||||
return new LoginUserForm();
|
||||
@GetMapping("/login")
|
||||
public String view() {
|
||||
return "login";
|
||||
}
|
||||
|
||||
// ログインボタンが押されたときの処理
|
||||
@PostMapping("/doLogin")
|
||||
public String doLogin(LoginInfoForm loginInfoForm, HttpSession session, Model model) {
|
||||
public String doLogin(LoginInfoForm form, HttpSession session, Model model) {
|
||||
|
||||
try {
|
||||
// 入力チェック(メールアドレスやパスワードの形が正しいか)
|
||||
if (!LoginUserForm.checkParameter(loginInfoForm)) {
|
||||
// エラーメッセージと、入力されたデータを画面に返す
|
||||
model.addAttribute("messageError", new MessageForm("メールアドレス、パスワードの入力内容に誤りがあります"));
|
||||
model.addAttribute("loginInfoForm", loginInfoForm);
|
||||
return "login"; // 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(loginInfoForm);
|
||||
|
||||
// セッション(サーバーの秘密のメモ帳)にユーザー情報を保存
|
||||
//「ログイン中」の状態
|
||||
session.setAttribute("loginUser", LoginUserForm.convertFrom(loginUser));
|
||||
|
||||
// 成功したらメニュー画面へ進む
|
||||
return "menu"; // menu.html を表示
|
||||
|
||||
} catch (Exception e) {
|
||||
// 予期せぬエラーが起きたら、セッションを消してエラー画面へ
|
||||
session.invalidate();
|
||||
LOGGER.error("エラーが発生しました!", e);
|
||||
return "error"; // error.html を表示
|
||||
// 入力チェック(メールアドレスやパスワードの形が正しいか)
|
||||
if (!LoginUserForm.checkParameter(form)) {
|
||||
// エラーメッセージと、入力されたデータを画面に返す
|
||||
model.addAttribute("messageError", new MessageForm("メールアドレス、パスワードの入力内容に誤りがあります"));
|
||||
model.addAttribute("loginInfoForm", form);
|
||||
return "login"; // login.html を表示
|
||||
}
|
||||
|
||||
// 認証チェック(IDとパスワードが一致するか)
|
||||
if (service.canLogin(form) == false) {
|
||||
// 間違っている場合のメッセージを画面に返す
|
||||
model.addAttribute("messageError", new MessageForm("IDまたはパスワードが間違っています"));
|
||||
model.addAttribute("loginInfoForm", form);
|
||||
return "login"; // login.html を表示
|
||||
}
|
||||
|
||||
// ログイン処理の実行
|
||||
Integer userId = service.getUserId(form);
|
||||
// セッションにユーザー情報を保存
|
||||
//「ログイン中」の状態
|
||||
session.setAttribute("loginUser", userId);
|
||||
|
||||
// 成功したらメニュー画面へ進む
|
||||
return "menu"; // menu.html を表示
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,64 +1,20 @@
|
||||
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;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
@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;
|
||||
}
|
||||
HttpSession session;
|
||||
|
||||
@PostMapping("/doLogout")
|
||||
public String doLogout() {
|
||||
//セッションをすべて破棄
|
||||
session.invalidate();
|
||||
return "login";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package com.example.demo.form;
|
||||
|
||||
import com.example.rhizome.app.domain.model.LoginUser;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -44,26 +42,26 @@ public class LoginUserForm {
|
||||
* @param loginUser business 層の LoginUser インスタンス
|
||||
* @return クラスから画面用(presentation 層)の LoginUserForm
|
||||
*/
|
||||
public static LoginUserForm convertFrom(LoginUser loginUser) {
|
||||
public static LoginUserForm convertFrom(LoginUserForm loginUser) {
|
||||
return new LoginUserForm(
|
||||
loginUser.getIdEmployee(),
|
||||
loginUser.getNmEmployee(),
|
||||
loginUser.getKnEmployee(),
|
||||
loginUser.getMailAddress(),
|
||||
loginUser.getPassword(),
|
||||
loginUser.getGetFlgadmin()
|
||||
loginUser.getFlgadmin()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public static LoginUserForm convertTo(LoginUser loginUserForm) {
|
||||
public static LoginUserForm convertTo(LoginUserForm loginUserForm) {
|
||||
return new LoginUserForm(
|
||||
loginUserForm.getIdEmployee(),
|
||||
loginUserForm.getNmEmployee(),
|
||||
loginUserForm.getKnEmployee(),
|
||||
loginUserForm.getMailAddress(),
|
||||
loginUserForm.getPassword(),
|
||||
loginUserForm.getGetFlgadmin()
|
||||
loginUserForm.getFlgadmin()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
package com.example.demo.form;
|
||||
|
||||
//画面にエラー表示する
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 画面に表示するエラーメッセージを管理するクラスです。
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class MessageForm {
|
||||
private String message;
|
||||
private String message;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user