diff --git a/src/main/java/app/mealsmadeeasy/api/recipe/RecipesController.java b/src/main/java/app/mealsmadeeasy/api/recipe/RecipesController.java index 66678b2..bbec3e6 100644 --- a/src/main/java/app/mealsmadeeasy/api/recipe/RecipesController.java +++ b/src/main/java/app/mealsmadeeasy/api/recipe/RecipesController.java @@ -190,6 +190,16 @@ public class RecipesController { return ResponseEntity.ok(this.sliceViewService.getSliceView(slice)); } + @GetMapping("/{username}/{slug}/comments/count") + public ResponseEntity> getCommentsCount( + @PathVariable String username, + @PathVariable String slug, + @Nullable @AuthenticationPrincipal User principal + ) { + final int count = this.recipeCommentService.countComments(username, slug, principal); + return ResponseEntity.ok(Map.of("count", count)); + } + @PostMapping("/{username}/{slug}/comments") public ResponseEntity addComment( @PathVariable String username, diff --git a/src/main/java/app/mealsmadeeasy/api/recipe/comment/RecipeCommentService.java b/src/main/java/app/mealsmadeeasy/api/recipe/comment/RecipeCommentService.java index 54cf2c6..6be83f3 100644 --- a/src/main/java/app/mealsmadeeasy/api/recipe/comment/RecipeCommentService.java +++ b/src/main/java/app/mealsmadeeasy/api/recipe/comment/RecipeCommentService.java @@ -10,5 +10,5 @@ public interface RecipeCommentService { Slice getComments(String recipeUsername, String recipeSlug, Pageable pageable, User viewer); RecipeComment update(Integer commentId, User viewer, RecipeCommentUpdateSpec spec) ; void delete(Integer commentId, User modifier); - int countComments(String recipeUsername, String recipeSlug); + int countComments(String recipeUsername, String recipeSlug, User viewer); } diff --git a/src/main/java/app/mealsmadeeasy/api/recipe/comment/RecipeCommentServiceImpl.java b/src/main/java/app/mealsmadeeasy/api/recipe/comment/RecipeCommentServiceImpl.java index 5a93f5e..52549ac 100644 --- a/src/main/java/app/mealsmadeeasy/api/recipe/comment/RecipeCommentServiceImpl.java +++ b/src/main/java/app/mealsmadeeasy/api/recipe/comment/RecipeCommentServiceImpl.java @@ -106,7 +106,8 @@ public class RecipeCommentServiceImpl implements RecipeCommentService { } @Override - public int countComments(String recipeUsername, String recipeSlug) { + @PreAuthorize("@recipeSecurity.isViewableBy(#recipeUsername, #recipeSlug, #viewer)") + public int countComments(String recipeUsername, String recipeSlug, User viewer) { return this.recipeCommentRepository.countByUsernameAndSlug(recipeUsername, recipeSlug); }