diff --git a/src/main/java/org/codiki/posts/PostController.java b/src/main/java/org/codiki/posts/PostController.java index 7a9df26..2ecab9c 100755 --- a/src/main/java/org/codiki/posts/PostController.java +++ b/src/main/java/org/codiki/posts/PostController.java @@ -17,6 +17,7 @@ import org.codiki.core.repositories.PostRepository; import org.codiki.core.security.TokenService; import org.codiki.core.services.ParserService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -131,4 +132,10 @@ public class PostController { final HttpServletResponse pResponse) throws IOException { postService.update(pPost, pRequest, pResponse); } + + @DeleteMapping("/{postKey}") + public void delete(@PathVariable("postKey") final String pPostKey, + final HttpServletRequest pRequest, final HttpServletResponse pResponse) throws IOException { + postService.delete(pPostKey, pRequest, pResponse); + } } diff --git a/src/main/java/org/codiki/posts/PostService.java b/src/main/java/org/codiki/posts/PostService.java index 6f0adfa..350afed 100755 --- a/src/main/java/org/codiki/posts/PostService.java +++ b/src/main/java/org/codiki/posts/PostService.java @@ -77,4 +77,23 @@ public class PostService { pResponse.sendError(HttpServletResponse.SC_FORBIDDEN); } } + + public void delete(final String pPostKey, final HttpServletRequest pRequest, + final HttpServletResponse pResponse) throws IOException { + final Optional postToDelete = postRepository.getByKey(pPostKey); + if(postToDelete.isPresent()) { + final Optional connectedUser = tokenService.getAuthenticatedUserByToken(pRequest); + if(connectedUser.isPresent()) { + if(connectedUser.get().getKey().equals(postToDelete.get().getAuthor().getKey())) { + postRepository.delete(postToDelete.get()); + } else { + pResponse.sendError(HttpServletResponse.SC_FORBIDDEN); + } + } else { + pResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED); + } + } else { + pResponse.sendError(HttpServletResponse.SC_NOT_FOUND); + } + } }