From 03d7ca2c7a3c3103bbe4875d4ec5ca931137ef46 Mon Sep 17 00:00:00 2001 From: limchanhyeok02 Date: Thu, 17 Apr 2025 15:20:23 +0900 Subject: [PATCH 1/6] Update index.html --- src/main/resources/templates/index.html | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 8de9f82..aac6074 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -52,12 +52,12 @@ button { background-color: #008CBA; color: white; - padding: 10px 20px; /* 높이 10px로 줄임 */ - margin: 0 10px; /* 버튼 사이의 간격 */ + padding: 10px 20px; + margin: 0 10px; border: none; border-radius: 4px; cursor: pointer; - font-size: 14px; /* 폰트 크기 14px로 줄임 */ + font-size: 14px; } button:hover { background-color: #005f73; @@ -69,29 +69,22 @@

도서 관리 시스템에 오신 것을 환영합니다!

-

로그인

- - - +
- - +
- -
- - \ No newline at end of file + From 22ea9b6e144bcfec5023a82b3a08652643717a89 Mon Sep 17 00:00:00 2001 From: limchanhyeok02 Date: Thu, 17 Apr 2025 15:21:39 +0900 Subject: [PATCH 2/6] Update joinMemberForm.html --- .../templates/member/joinMemberForm.html | 59 ++++++------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/src/main/resources/templates/member/joinMemberForm.html b/src/main/resources/templates/member/joinMemberForm.html index aed18ad..4de3c80 100644 --- a/src/main/resources/templates/member/joinMemberForm.html +++ b/src/main/resources/templates/member/joinMemberForm.html @@ -1,36 +1,18 @@ - + - + + 회원 등록 폼 @@ -39,22 +21,22 @@

회원 등록 폼

회원 정보 입력

-
+
- +
- +
- +
- +

@@ -62,15 +44,12 @@

회원 정보 입력

- +
- - +
- - + From 628b6a73106df570d45e46ac47cf65fb20cffdee Mon Sep 17 00:00:00 2001 From: limchanhyeok02 Date: Thu, 17 Apr 2025 15:22:41 +0900 Subject: [PATCH 3/6] Update loginHome.html --- src/main/resources/templates/loginHome.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/templates/loginHome.html b/src/main/resources/templates/loginHome.html index a786a7c..cf40fd8 100644 --- a/src/main/resources/templates/loginHome.html +++ b/src/main/resources/templates/loginHome.html @@ -84,10 +84,11 @@

도서 관리 시스템에 오신 것을 환영합니다!

+
- \ No newline at end of file + From 0349bf4c5a09ef74acc1532aa83ff015af44051b Mon Sep 17 00:00:00 2001 From: limchanhyeok02 Date: Thu, 17 Apr 2025 15:24:35 +0900 Subject: [PATCH 4/6] Update MemberRepository.java --- .../java/cnu/mvc/domain/member/MemberRepository.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/cnu/mvc/domain/member/MemberRepository.java b/src/main/java/cnu/mvc/domain/member/MemberRepository.java index 1b273fc..3bc1b7a 100644 --- a/src/main/java/cnu/mvc/domain/member/MemberRepository.java +++ b/src/main/java/cnu/mvc/domain/member/MemberRepository.java @@ -1,7 +1,6 @@ package cnu.mvc.domain.member; import org.springframework.stereotype.Repository; - import java.util.HashMap; import java.util.Map; @@ -11,18 +10,25 @@ public class MemberRepository { private static final Map store = new HashMap<>(); private static long sequence = 0L; + // 회원 저장: ID 부여 후 Map에 저장 public Member save(Member member) { member.setId(++sequence); store.put(member.getId(), member); return member; } + + // ID로 회원 조회 public Member findById(Long id) { return store.get(id); } - // 구현 + // 이메일로 회원 조회 (회원가입 중복검사 및 로그인 시 사용) public Member findByEmail(String email) { + for (Member m : store.values()) { + if (m.getEmail().equals(email)) { + return m; + } + } return null; } } - From f7312cba76e75c503affe5a06185d783974e71e6 Mon Sep 17 00:00:00 2001 From: limchanhyeok02 Date: Thu, 17 Apr 2025 15:24:53 +0900 Subject: [PATCH 5/6] Update MemberController.java --- .../mvc/domain/member/MemberController.java | 59 +++++++++++-------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/src/main/java/cnu/mvc/domain/member/MemberController.java b/src/main/java/cnu/mvc/domain/member/MemberController.java index 6de12b6..3d80a41 100644 --- a/src/main/java/cnu/mvc/domain/member/MemberController.java +++ b/src/main/java/cnu/mvc/domain/member/MemberController.java @@ -5,10 +5,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; @Controller @RequestMapping("/members") @@ -17,50 +14,66 @@ public class MemberController { private final MemberService memberService; + // 초기 데이터 등록 (테스트용) @PostConstruct public void init() { - memberService.join(new Member("kim", "kim@gmail.com", "010-1234-5678", "1234")); + try { + memberService.join(new Member("kim", "kim@gmail.com", "010-1234-5678", "1234")); + } catch (IllegalStateException e) { + // 이미 등록되어 있으면 무시 + } } - // 회원등록 화면 + // 회원가입 폼(GET): joinMemberForm.html 사용 @GetMapping("/join") - public String joinForm() { + public String joinForm(Model model) { + model.addAttribute("member", new Member()); return "member/joinMemberForm"; } - //회원등록 + // 회원가입 처리(POST) @PostMapping("/join") public String join(Member member, Model model) { - try { memberService.join(member); - model.addAttribute(member); - return "member/member"; - - } catch (Exception e) { + return "member/member"; // 가입 성공 시 회원 상세 화면 + } catch (IllegalStateException e) { + // 중복 이메일 시 에러 메시지를 모델에 담고 다시 가입 폼으로 전달 model.addAttribute("error", e.getMessage()); + model.addAttribute("member", member); return "member/joinMemberForm"; } } - @PostMapping("/login") - public String login(@RequestParam("email") String email, @RequestParam("pwd") String pwd, HttpSession session, Model model){ + // 로그인 폼(GET): loginForm.html 사용 + @GetMapping("/login") + public String loginForm() { + return "member/loginHome"; + } + // 로그인 처리(POST) + @PostMapping("/login") + public String login(@RequestParam("email") String email, + @RequestParam("pwd") String pwd, + HttpSession session, + Model model) { try { - Member member = memberService.validateMember(email, pwd); - session.setAttribute("currentMember", member); // session 추가 - model.addAttribute("memberName", member.getName()); - return "loginHome"; - - } catch (Exception e) { + Member loginMember = memberService.validateMember(email, pwd); + session.setAttribute("currentMember", loginMember); + model.addAttribute("memberName", loginMember.getName()); + return "loginHome"; // 로그인 성공 시 loginHome.html로 이동 + } catch (IllegalArgumentException e) { model.addAttribute("error", e.getMessage()); - return "index"; + return "index"; // 로그인 실패 시 index.html(로그인 폼)로 이동 } } + + + // 로그아웃 처리(POST) @PostMapping("/logout") public String logout(HttpSession session) { session.invalidate(); - return "redirect:/"; + return "redirect:/"; // 로그아웃 후 메인으로 리다이렉트 } } From 84d0581508167c56397834330072351909323b89 Mon Sep 17 00:00:00 2001 From: limchanhyeok02 Date: Thu, 17 Apr 2025 15:25:10 +0900 Subject: [PATCH 6/6] Update MemberService.java --- .../cnu/mvc/domain/member/MemberService.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/cnu/mvc/domain/member/MemberService.java b/src/main/java/cnu/mvc/domain/member/MemberService.java index b8e785e..2be0b1e 100644 --- a/src/main/java/cnu/mvc/domain/member/MemberService.java +++ b/src/main/java/cnu/mvc/domain/member/MemberService.java @@ -9,22 +9,23 @@ public class MemberService { private final MemberRepository memberRepository; - public Member join(Member member){ + public Member join(Member member) { + if (memberRepository.findByEmail(member.getEmail()) != null) { + throw new IllegalStateException("이미 존재하는 이메일 계정입니다."); + } return memberRepository.save(member); } - public Member validateMember(String email, String pwd) { - Member findMember = findById(1L); - return findMember; + public Member validateMember(String email, String password) { + Member member = memberRepository.findByEmail(email); + if (member == null || !member.getPwd().equals(password)) { + throw new IllegalArgumentException("이메일 또는 비밀번호를 확인해주세요."); + } + return member; } + public Member findById(Long id) { return memberRepository.findById(id); } - - // 구현 - public Member findByEmail(String email) { - return memberRepository.findByEmail(email); - } - }