From 53fa5602d58a332c1f70462b2ebd8efe5b3bb83a Mon Sep 17 00:00:00 2001 From: kimdongmin Date: Wed, 29 Mar 2023 17:55:43 +0900 Subject: [PATCH 01/11] =?UTF-8?q?feat(mission5):=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=20=EC=9E=91=EC=84=B1=EC=8B=9C=20=EC=9E=91=EC=84=B1?= =?UTF-8?q?=EC=9E=90=20=EC=9E=85=EB=A0=A5=20=ED=95=84=EB=93=9C=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit qan/form.html 파일에서 작성자 입력 필드 삭제 --- src/main/resources/templates/data.sql | 5 ++++- src/main/resources/templates/qna/form.html | 4 ---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/resources/templates/data.sql b/src/main/resources/templates/data.sql index 1eaf93f5..544e85db 100644 --- a/src/main/resources/templates/data.sql +++ b/src/main/resources/templates/data.sql @@ -5,4 +5,7 @@ insert into member (email, nickname, password) values ('kim@naver.com', 'kim', '123'); insert into article (writer, title, contents) -values ('manju', 'hi', 'hello'); +values ('manju', '가입인사 드립니다.', '등업해주세요!'); + +insert into article (writer, title, contents) +values ('core', '자바 질문', '스트림에 대해서 질문합니다.'); diff --git a/src/main/resources/templates/qna/form.html b/src/main/resources/templates/qna/form.html index 92df1af8..2e50eb48 100644 --- a/src/main/resources/templates/qna/form.html +++ b/src/main/resources/templates/qna/form.html @@ -77,10 +77,6 @@
-
- - -
From 0c45ea982822b9988dc4ec02d66b79030e07e116 Mon Sep 17 00:00:00 2001 From: kimdongmin Date: Thu, 30 Mar 2023 11:45:49 +0900 Subject: [PATCH 02/11] =?UTF-8?q?feat(mission5):=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=9D=B4=EC=A0=84=EC=97=90=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=EC=93=B0=EA=B8=B0=20=EC=8B=9C=EB=8F=84=EC=8B=9C=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98=EB=8A=94=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit askQuestion() 메소드 생성한 후 Session을 가지고 와서 null인 경우 로그인 페이지로 리다이렉트 실행 --- .../java/kr/codesqaud/cafe/config/CafeConfig.java | 1 - .../codesqaud/cafe/controller/ArticleController.java | 12 ++++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/kr/codesqaud/cafe/config/CafeConfig.java b/src/main/java/kr/codesqaud/cafe/config/CafeConfig.java index d104201b..8a7e5afc 100644 --- a/src/main/java/kr/codesqaud/cafe/config/CafeConfig.java +++ b/src/main/java/kr/codesqaud/cafe/config/CafeConfig.java @@ -36,7 +36,6 @@ public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/user/login").setViewName("user/login"); registry.addViewController("/user/form").setViewName("user/form"); registry.addViewController("/qna/show").setViewName("qna/show"); - registry.addViewController("/qna/article").setViewName("qna/form"); registry.addViewController("/login_fail").setViewName("user/login_fail"); } } diff --git a/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java b/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java index a5a481f8..b94b7761 100644 --- a/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java +++ b/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java @@ -1,11 +1,14 @@ package kr.codesqaud.cafe.controller; import kr.codesqaud.cafe.domain.Article; +import kr.codesqaud.cafe.domain.Member; import kr.codesqaud.cafe.service.ArticleService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpSession; + @Controller public class ArticleController { @@ -16,6 +19,15 @@ public ArticleController(ArticleService articleService) { this.articleService = articleService; } + @GetMapping("/qna/article") + public String askQuestion(HttpSession httpSession) { + Member member = (Member) httpSession.getAttribute("sessionedUser"); + if (member == null) { + return "redirect:/user/login"; + } + return "qna/form"; + } + @PostMapping("/qna/ask") public String registerArticle(Article article) { articleService.writeArticle(article); From 7af2c75dc651ea6519aed108ec2e178f8aabb9db Mon Sep 17 00:00:00 2001 From: kimdongmin Date: Thu, 30 Mar 2023 12:17:41 +0900 Subject: [PATCH 03/11] =?UTF-8?q?feat(mission5):=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=9D=B4=EC=A0=84=EC=97=90=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=20=EC=A1=B0=ED=9A=8C=EC=8B=9C=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=ED=99=94=EB=A9=B4=EC=9C=BC=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cafe/controller/ArticleController.java | 5 ++++- .../java/kr/codesqaud/cafe/domain/Article.java | 14 +------------- src/main/java/kr/codesqaud/cafe/domain/Member.java | 1 - 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java b/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java index b94b7761..c708aa67 100644 --- a/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java +++ b/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java @@ -42,7 +42,10 @@ public String printArticleList(Model model) { } @GetMapping("/qna/{articleId}") - public String printDetailArticle(@PathVariable int articleId, Model model) { + public String printDetailArticle(@PathVariable int articleId, HttpSession httpSession, Model model) { + if (httpSession.getAttribute("sessionedUser") == null) { + return "redirect:/user/login"; + }; Article article = articleService.findOneArticleById(articleId).get(); model.addAttribute("article", article); return "qna/show"; diff --git a/src/main/java/kr/codesqaud/cafe/domain/Article.java b/src/main/java/kr/codesqaud/cafe/domain/Article.java index cf1984ad..12cc6e26 100644 --- a/src/main/java/kr/codesqaud/cafe/domain/Article.java +++ b/src/main/java/kr/codesqaud/cafe/domain/Article.java @@ -69,16 +69,4 @@ public void setRegistrationDate(LocalDateTime registrationDate) { public String getFormattedRegistrationDate() { return formattedRegistrationDate; } - - @Override - public String toString() { - return "Article{" + - "articleId=" + articleId + - ", writer='" + writer + '\'' + - ", title='" + title + '\'' + - ", contents='" + contents + '\'' + - ", registrationDate=" + registrationDate + - ", formattedRegistrationDate='" + formattedRegistrationDate + '\'' + - '}'; - } -} \ No newline at end of file +} diff --git a/src/main/java/kr/codesqaud/cafe/domain/Member.java b/src/main/java/kr/codesqaud/cafe/domain/Member.java index a9db62e3..60380348 100644 --- a/src/main/java/kr/codesqaud/cafe/domain/Member.java +++ b/src/main/java/kr/codesqaud/cafe/domain/Member.java @@ -65,4 +65,3 @@ public String getFormattedSignUpDate() { return formattedSignUpDate; } } - From c75d94a2d9b6c6ace56ded0adbac83561235f9bb Mon Sep 17 00:00:00 2001 From: kimdongmin Date: Thu, 30 Mar 2023 16:30:33 +0900 Subject: [PATCH 04/11] =?UTF-8?q?feat(mission5):=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=ED=95=9C=20=EB=8B=89=EB=84=A4=EC=9E=84=EA=B3=BC=20?= =?UTF-8?q?=EA=B8=80=20=EC=9E=91=EC=84=B1=20=EB=8B=89=EB=84=A4=EC=9E=84?= =?UTF-8?q?=EC=9D=B4=20=EC=9D=BC=EC=B9=98=ED=95=98=EB=8A=94=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=EC=97=90=20=EC=88=98=EC=A0=95=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=EB=A1=9C=20=EC=9D=B4=EB=8F=99=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 일치하지 않을 경우 '글 작성자만 수정할 수 있습니다' 오류페이지로 이동 --- .../cafe/controller/ArticleController.java | 15 +++ .../java/kr/codesqaud/cafe/domain/Member.java | 8 +- .../cafe/repository/ArticleRepository.java | 1 + .../JdbcTemplateArticleRepository.java | 6 +- .../JdbcTemplateMemberRepository.java | 4 +- .../cafe/repository/MemberRepository.java | 2 +- .../repository/MemoryArticleRepository.java | 5 + .../repository/MemoryMemberRepository.java | 3 +- .../cafe/service/ArticleService.java | 4 + .../resources/templates/qna/edite_fail.html | 13 +++ src/main/resources/templates/qna/show.html | 2 +- .../resources/templates/qna/updateForm.html | 100 ++++++++++++++++++ src/main/resources/templates/schema.sql | 4 +- src/main/resources/templates/user/header.html | 2 +- 14 files changed, 157 insertions(+), 12 deletions(-) create mode 100644 src/main/resources/templates/qna/edite_fail.html create mode 100644 src/main/resources/templates/qna/updateForm.html diff --git a/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java b/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java index c708aa67..daad22e9 100644 --- a/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java +++ b/src/main/java/kr/codesqaud/cafe/controller/ArticleController.java @@ -34,6 +34,12 @@ public String registerArticle(Article article) { return "redirect:/"; } +// @PostMapping("/qna/update") +// public String updateArticle(Article artice) { +// articleService. +// return "redirect:/"; +// } + @GetMapping("/") public String printArticleList(Model model) { model.addAttribute("article", articleService.findArticles()); @@ -50,4 +56,13 @@ public String printDetailArticle(@PathVariable int articleId, HttpSession httpSe model.addAttribute("article", article); return "qna/show"; } + + @GetMapping("/article/{nickName}/edite") + public String editeArticle(@PathVariable String nickName, HttpSession httpSession) { + Member member = (Member) httpSession.getAttribute("sessionedUser"); + if (member.getNickName().equals(nickName)) { + return "qna/updateForm"; + } + return "qna/edite_fail"; + } } diff --git a/src/main/java/kr/codesqaud/cafe/domain/Member.java b/src/main/java/kr/codesqaud/cafe/domain/Member.java index 60380348..513be843 100644 --- a/src/main/java/kr/codesqaud/cafe/domain/Member.java +++ b/src/main/java/kr/codesqaud/cafe/domain/Member.java @@ -7,7 +7,7 @@ public class Member { - private long id; + private long userId; private String email; private String nickName; private String password; @@ -26,7 +26,7 @@ public Member(String email, String nickName, String password) { } public long getId() { - return id; + return userId; } public String getEmail() { @@ -64,4 +64,8 @@ public void setSignUpDate(LocalDateTime signUpDate) { public String getFormattedSignUpDate() { return formattedSignUpDate; } + + public void setUserId(long userId) { + this.userId = userId; + } } diff --git a/src/main/java/kr/codesqaud/cafe/repository/ArticleRepository.java b/src/main/java/kr/codesqaud/cafe/repository/ArticleRepository.java index 4b8588f3..970eb958 100644 --- a/src/main/java/kr/codesqaud/cafe/repository/ArticleRepository.java +++ b/src/main/java/kr/codesqaud/cafe/repository/ArticleRepository.java @@ -12,4 +12,5 @@ public interface ArticleRepository { List
getArticles(); void deleteArticle(Member member); int getSize(); + void updateArticle(Article article); } diff --git a/src/main/java/kr/codesqaud/cafe/repository/JdbcTemplateArticleRepository.java b/src/main/java/kr/codesqaud/cafe/repository/JdbcTemplateArticleRepository.java index 20b09b0b..b33e412d 100644 --- a/src/main/java/kr/codesqaud/cafe/repository/JdbcTemplateArticleRepository.java +++ b/src/main/java/kr/codesqaud/cafe/repository/JdbcTemplateArticleRepository.java @@ -37,7 +37,6 @@ public void saveArticle(Article article) { @Override public Optional
findOneArticleById(int id) { - System.out.println(id); return Optional.ofNullable(jdbcTemplate.queryForObject("select * from article where articleId = ?", articleRowMapper(), id)); } @@ -56,6 +55,11 @@ public int getSize() { return jdbcTemplate.queryForObject("select count(*) from article", Integer.class); } + @Override + public void updateArticle(Article article) { + + } + private RowMapper
articleRowMapper() { return (rs, rowNum) -> { Article article = new Article(); diff --git a/src/main/java/kr/codesqaud/cafe/repository/JdbcTemplateMemberRepository.java b/src/main/java/kr/codesqaud/cafe/repository/JdbcTemplateMemberRepository.java index fc531b28..0312cbf9 100644 --- a/src/main/java/kr/codesqaud/cafe/repository/JdbcTemplateMemberRepository.java +++ b/src/main/java/kr/codesqaud/cafe/repository/JdbcTemplateMemberRepository.java @@ -23,7 +23,7 @@ public JdbcTemplateMemberRepository(DataSource datasource) { } @Override - public Member saveMember(Member member) { + public void saveMember(Member member) { SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate); jdbcInsert.withTableName("member").usingGeneratedKeyColumns("id"); @@ -34,7 +34,6 @@ public Member saveMember(Member member) { parameters.put("signUpDate", Timestamp.valueOf(member.getSignUpDate().format(DateTimeFormatter.ofPattern("yyy-MM-dd")) + " 00:00:00")); jdbcInsert.execute(new MapSqlParameterSource(parameters)); - return member; } @Override @@ -61,7 +60,6 @@ public int getSize() { @Override public void editeMember(Member member) { jdbcTemplate.update("UPDATE member SET nickName = ? WHERE email = ?", member.getNickName(), member.getEmail()); - } private RowMapper memberRowMapper() { diff --git a/src/main/java/kr/codesqaud/cafe/repository/MemberRepository.java b/src/main/java/kr/codesqaud/cafe/repository/MemberRepository.java index 12162aeb..07795f08 100644 --- a/src/main/java/kr/codesqaud/cafe/repository/MemberRepository.java +++ b/src/main/java/kr/codesqaud/cafe/repository/MemberRepository.java @@ -6,7 +6,7 @@ import java.util.Optional; public interface MemberRepository { - Member saveMember(Member member); + void saveMember(Member member); Optional findOneMemberbyEmail(String email); diff --git a/src/main/java/kr/codesqaud/cafe/repository/MemoryArticleRepository.java b/src/main/java/kr/codesqaud/cafe/repository/MemoryArticleRepository.java index b3e3c912..7d0b9fff 100644 --- a/src/main/java/kr/codesqaud/cafe/repository/MemoryArticleRepository.java +++ b/src/main/java/kr/codesqaud/cafe/repository/MemoryArticleRepository.java @@ -38,6 +38,11 @@ public int getSize() { return articlesRepository.size(); } + @Override + public void updateArticle(Article article) { + + } + @Override public void deleteArticle(Member member) { diff --git a/src/main/java/kr/codesqaud/cafe/repository/MemoryMemberRepository.java b/src/main/java/kr/codesqaud/cafe/repository/MemoryMemberRepository.java index 083d5564..463f36dd 100644 --- a/src/main/java/kr/codesqaud/cafe/repository/MemoryMemberRepository.java +++ b/src/main/java/kr/codesqaud/cafe/repository/MemoryMemberRepository.java @@ -13,9 +13,8 @@ public MemoryMemberRepository() { } @Override - public Member saveMember(Member member) { + public void saveMember(Member member) { repository.put(member.getEmail(), member); - return member; } @Override diff --git a/src/main/java/kr/codesqaud/cafe/service/ArticleService.java b/src/main/java/kr/codesqaud/cafe/service/ArticleService.java index 618760ae..c468ee52 100644 --- a/src/main/java/kr/codesqaud/cafe/service/ArticleService.java +++ b/src/main/java/kr/codesqaud/cafe/service/ArticleService.java @@ -30,4 +30,8 @@ public List
findArticles() { public int getTotalNumberOfArticles() { return articleRepository.getSize(); } + + public void updateArticle(Article article) { + articleRepository.updateArticle(article); + } } diff --git a/src/main/resources/templates/qna/edite_fail.html b/src/main/resources/templates/qna/edite_fail.html new file mode 100644 index 00000000..54c9cc79 --- /dev/null +++ b/src/main/resources/templates/qna/edite_fail.html @@ -0,0 +1,13 @@ +{{>user/header}} + + + +
+
+

다른 사람의 글을 수정할 수 없습니다!

+
+ 홈으로 +
+
+ + diff --git a/src/main/resources/templates/qna/show.html b/src/main/resources/templates/qna/show.html index 5eb5b6aa..bf1c4069 100644 --- a/src/main/resources/templates/qna/show.html +++ b/src/main/resources/templates/qna/show.html @@ -100,7 +100,7 @@

{{title}}

  • - 수정 + 수정
  • diff --git a/src/main/resources/templates/qna/updateForm.html b/src/main/resources/templates/qna/updateForm.html new file mode 100644 index 00000000..1a678ef7 --- /dev/null +++ b/src/main/resources/templates/qna/updateForm.html @@ -0,0 +1,100 @@ + + + + + + SLiPP Java Web Programming + + + + + + + + + +
    +
    +
    +
    +
    + + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/schema.sql b/src/main/resources/templates/schema.sql index d32ff0ce..3ce88f5e 100644 --- a/src/main/resources/templates/schema.sql +++ b/src/main/resources/templates/schema.sql @@ -14,6 +14,8 @@ create table article ( writer varchar(255), title varchar(255), contents varchar(255), - registrationDate DateTime default now() + registrationDate DateTime default now(), + userId bigint, + FOREIGN KEY (userId) references member (id) ); diff --git a/src/main/resources/templates/user/header.html b/src/main/resources/templates/user/header.html index 8446b0af..a296c4a5 100644 --- a/src/main/resources/templates/user/header.html +++ b/src/main/resources/templates/user/header.html @@ -30,7 +30,7 @@ {{/sessionedUser}} {{#sessionedUser}}