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