diff --git a/jpablog/src/main/java/com/example/jpablog/controller/BoardController.java b/jpablog/src/main/java/com/example/jpablog/controller/BoardController.java index 2c5d2035..2a5865d6 100644 --- a/jpablog/src/main/java/com/example/jpablog/controller/BoardController.java +++ b/jpablog/src/main/java/com/example/jpablog/controller/BoardController.java @@ -31,6 +31,12 @@ public class BoardController { return "board/detail"; } + @GetMapping("/board/{id}/updateForm") + public String updateForm(@PathVariable Long id, Model model){ + model.addAttribute("board", boardService.글상세보기(id)); + return "board/updateForm"; + } + @GetMapping("/board/saveForm") public String save() { return "board/saveForm"; diff --git a/jpablog/src/main/java/com/example/jpablog/controller/api/BoardApiController.java b/jpablog/src/main/java/com/example/jpablog/controller/api/BoardApiController.java index a84ac98e..c8194f75 100644 --- a/jpablog/src/main/java/com/example/jpablog/controller/api/BoardApiController.java +++ b/jpablog/src/main/java/com/example/jpablog/controller/api/BoardApiController.java @@ -20,16 +20,21 @@ public class BoardApiController { private final BoardService boardService; @PostMapping("/api/board") - public ResponseDto save(@RequestBody Board board, @AuthenticationPrincipal PrincipalDetail principal, Principal p) { - System.out.println(p.getName()); + public ResponseDto save(@RequestBody Board board, @AuthenticationPrincipal PrincipalDetail principal) { boardService.글쓰기(board, principal.getUser()); return new ResponseDto<>(1, HttpStatus.OK.value()); } @DeleteMapping("/api/board/{id}") - public ResponseDto deleteById(@PathVariable Long id) { - boardService.글삭제하기(id); - return new ResponseDto<>(1, HttpStatus.OK.value()); + public ResponseDto deleteById(@PathVariable Long id, Principal principal) { + int result = boardService.글삭제하기(id, principal.getName()); + return new ResponseDto<>(result, HttpStatus.OK.value()); + } + + @PatchMapping("/api/board/{id}") + public ResponseDto update(@PathVariable Long id, @RequestBody Board board, Principal principal) { + int result = boardService.글수정하기(id,board, principal.getName()); + return new ResponseDto<>(result, HttpStatus.OK.value()); } /*// 기본 로그인 diff --git a/jpablog/src/main/java/com/example/jpablog/service/BoardService.java b/jpablog/src/main/java/com/example/jpablog/service/BoardService.java index 1438302b..29fd3c7a 100644 --- a/jpablog/src/main/java/com/example/jpablog/service/BoardService.java +++ b/jpablog/src/main/java/com/example/jpablog/service/BoardService.java @@ -38,7 +38,26 @@ public class BoardService { } @Transactional - public void 글삭제하기(Long id) { - boardRepository.deleteById(id); + public int 글삭제하기(Long id, String name) { + String writer = boardRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("아이디 없음")) + .getUser().getUsername(); + if (writer.equals(name)) { + boardRepository.deleteById(id); + return 1; + } + return -1; + } + + @Transactional + public int 글수정하기(Long id, Board requestBoard, String name) { + Board board = boardRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("아이디 없음")); + if (board.getUser().getUsername().equals(name)) { + board.setTitle(requestBoard.getTitle()); + board.setContent(requestBoard.getContent()); + return 1; + } + return -1; } } diff --git a/jpablog/src/main/resources/static/js/board.js b/jpablog/src/main/resources/static/js/board.js index 48d744c2..995d3b78 100644 --- a/jpablog/src/main/resources/static/js/board.js +++ b/jpablog/src/main/resources/static/js/board.js @@ -6,6 +6,9 @@ let index = { $("#btn-delete").on("click", () => { this.deleteById(); }) + $("#btn-update").on("click", () => { + this.update(); + }) }, save : function () { let data = { @@ -32,8 +35,31 @@ let index = { url: "/api/board/" + id, dataType: "json" }).done(function (resp){ - alert("삭제 완료!"); - location.href = "/"; + if (resp.data === 1) { + alert("삭제 완료!"); + location.href = "/"; + } + }).fail(function (error){ + alert(JSON.stringify(error)); + }); + }, + update : function () { + let id = $("#id").val(); + let data = { + title: $("#title").val(), + content: $("#content").val(), + }; + $.ajax({ + type: "patch", + url: "/api/board/"+id, + data: JSON.stringify(data), + contentType: "application/json; charset=utf-8", + dataType: "json" + }).done(function (resp){ + if (resp.data === 1) { + alert("글수정 완료!"); + history.back(); + } }).fail(function (error){ alert(JSON.stringify(error)); }); diff --git a/jpablog/src/main/webapp/WEB-INF/views/board/detail.jsp b/jpablog/src/main/webapp/WEB-INF/views/board/detail.jsp index ccbc5b94..b0fae629 100644 --- a/jpablog/src/main/webapp/WEB-INF/views/board/detail.jsp +++ b/jpablog/src/main/webapp/WEB-INF/views/board/detail.jsp @@ -5,7 +5,7 @@
- + 수정

diff --git a/jpablog/src/main/webapp/WEB-INF/views/board/updateForm.jsp b/jpablog/src/main/webapp/WEB-INF/views/board/updateForm.jsp new file mode 100644 index 00000000..b85eae5e --- /dev/null +++ b/jpablog/src/main/webapp/WEB-INF/views/board/updateForm.jsp @@ -0,0 +1,27 @@ +<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> + +<%@include file="../layout/header.jsp"%> + +
+
+ +
+ + +
+
+ + +
+ +
+
+ + +<%@include file="../layout/footer.jsp"%> \ No newline at end of file