From a85faf9aca42936aaf7109eb73b20a6cacd68074 Mon Sep 17 00:00:00 2001 From: Andreas Kaiberger Date: Mon, 27 Apr 2026 10:43:28 +0200 Subject: [PATCH 1/6] Add ticket view link, implement custom CommentDto query, and remove comment title from ticket template. --- .../untitled/usercase/repository/CommentRepository.java | 5 +++++ src/main/resources/templates/ticket.html | 1 - src/main/resources/templates/userpage.html | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java b/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java index f959bde..035efbe 100644 --- a/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java +++ b/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java @@ -3,10 +3,15 @@ import org.example.untitled.usercase.CaseEntity; import org.example.untitled.usercase.Comment; import org.example.untitled.usercase.dto.CommentDto; +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.ListCrudRepository; import java.util.List; public interface CommentRepository extends ListCrudRepository { + + @Query("SELECT new org.example.untitled.usercase.dto.CommentDto(" + + "c.id, c.text, c.author.id, c.author.username, c.caseEntity.id, c.createdAt) " + + "FROM Comment c WHERE c.caseEntity = :caseEntity") List findCommentsByCaseEntity(CaseEntity caseEntity); } diff --git a/src/main/resources/templates/ticket.html b/src/main/resources/templates/ticket.html index 891c0b9..b2379e2 100644 --- a/src/main/resources/templates/ticket.html +++ b/src/main/resources/templates/ticket.html @@ -26,7 +26,6 @@

Ticket Details

-

Author: diff --git a/src/main/resources/templates/userpage.html b/src/main/resources/templates/userpage.html index bd8fe14..ec23c82 100644 --- a/src/main/resources/templates/userpage.html +++ b/src/main/resources/templates/userpage.html @@ -46,6 +46,7 @@

My Tickets

+ View Edit Close From 83e289b157da2b850349817d8ebe34c4265656d4 Mon Sep 17 00:00:00 2001 From: Andreas Kaiberger Date: Mon, 27 Apr 2026 10:51:31 +0200 Subject: [PATCH 2/6] Sort comments by creation date in `findCommentsByCaseEntity` query. --- .../untitled/usercase/repository/CommentRepository.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java b/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java index 035efbe..f5e6263 100644 --- a/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java +++ b/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java @@ -5,6 +5,7 @@ import org.example.untitled.usercase.dto.CommentDto; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.ListCrudRepository; +import org.springframework.data.repository.query.Param; import java.util.List; @@ -12,6 +13,7 @@ public interface CommentRepository extends ListCrudRepository { @Query("SELECT new org.example.untitled.usercase.dto.CommentDto(" + "c.id, c.text, c.author.id, c.author.username, c.caseEntity.id, c.createdAt) " + - "FROM Comment c WHERE c.caseEntity = :caseEntity") - List findCommentsByCaseEntity(CaseEntity caseEntity); + "FROM Comment c WHERE c.caseEntity = :caseEntity " + + "ORDER BY c.createdAt ASC") + List findCommentsByCaseEntity(@Param("caseEntity") CaseEntity caseEntity); } From adc82063174959983ab893a23866de9bade54421 Mon Sep 17 00:00:00 2001 From: Andreas Kaiberger Date: Mon, 27 Apr 2026 11:44:18 +0200 Subject: [PATCH 3/6] Add Javadoc comment to `CommentRepository` describing purpose and functionality. --- .../untitled/usercase/repository/CommentRepository.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java b/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java index f5e6263..d9f7313 100644 --- a/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java +++ b/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java @@ -9,6 +9,11 @@ import java.util.List; +/** + * Repository for managing {@link Comment} entities. + * Provides a custom query for retrieving comments associated with a specific ticket, + * ordered chronologically. + */ public interface CommentRepository extends ListCrudRepository { @Query("SELECT new org.example.untitled.usercase.dto.CommentDto(" + From d962f852fdd270101df6d5fd3c8456d083fcdc1e Mon Sep 17 00:00:00 2001 From: Andreas Kaiberger Date: Mon, 27 Apr 2026 14:51:20 +0200 Subject: [PATCH 4/6] Update upload link in userpage and implement role-based navigation in ticket template. --- src/main/resources/templates/ticket.html | 9 +++++++-- src/main/resources/templates/userpage.html | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/resources/templates/ticket.html b/src/main/resources/templates/ticket.html index b2379e2..8ee370d 100644 --- a/src/main/resources/templates/ticket.html +++ b/src/main/resources/templates/ticket.html @@ -1,5 +1,7 @@ - + Ticket @@ -36,7 +38,10 @@

Ticket Details

diff --git a/src/main/resources/templates/userpage.html b/src/main/resources/templates/userpage.html index ec23c82..5d5e298 100644 --- a/src/main/resources/templates/userpage.html +++ b/src/main/resources/templates/userpage.html @@ -11,7 +11,7 @@

My Tickets

From 92d51ce611c504a1ce2ae3d944331a4e96f7c778 Mon Sep 17 00:00:00 2001 From: Andreas Kaiberger Date: Mon, 27 Apr 2026 15:55:28 +0200 Subject: [PATCH 5/6] Remove Javadoc comment from `CommentRepository`. --- .../untitled/usercase/repository/CommentRepository.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java b/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java index d9f7313..f5e6263 100644 --- a/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java +++ b/src/main/java/org/example/untitled/usercase/repository/CommentRepository.java @@ -9,11 +9,6 @@ import java.util.List; -/** - * Repository for managing {@link Comment} entities. - * Provides a custom query for retrieving comments associated with a specific ticket, - * ordered chronologically. - */ public interface CommentRepository extends ListCrudRepository { @Query("SELECT new org.example.untitled.usercase.dto.CommentDto(" + From 509b5a20aca6158aea9b58e7df274bb72489205c Mon Sep 17 00:00:00 2001 From: Andreas Kaiberger Date: Mon, 27 Apr 2026 16:01:56 +0200 Subject: [PATCH 6/6] Add role-based access control to UserController and update ticket template with admin role authorization --- .../org/example/untitled/user/controller/UserController.java | 2 ++ src/main/resources/templates/ticket.html | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/example/untitled/user/controller/UserController.java b/src/main/java/org/example/untitled/user/controller/UserController.java index ecf6b0a..786656c 100644 --- a/src/main/java/org/example/untitled/user/controller/UserController.java +++ b/src/main/java/org/example/untitled/user/controller/UserController.java @@ -6,6 +6,7 @@ import org.example.untitled.exception.UserAlreadyExistsException; import org.example.untitled.user.service.UserService; import org.example.untitled.usercase.service.CaseService; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Controller; @@ -28,6 +29,7 @@ public UserController(UserService service, CaseService caseService) { } @GetMapping("/user") + @PreAuthorize("hasRole('USER')") public String userLanding(Model model, @AuthenticationPrincipal UserDetails userDetails, @RequestParam(required = false) String filter) { diff --git a/src/main/resources/templates/ticket.html b/src/main/resources/templates/ticket.html index 8ee370d..ef79986 100644 --- a/src/main/resources/templates/ticket.html +++ b/src/main/resources/templates/ticket.html @@ -38,7 +38,7 @@

Ticket Details