]> source.dussan.org Git - gitblit.git/commitdiff
Fix for #1037 myTickets now honours permissions 1040/head
authorPaul Martin <paul@paulsputer.com>
Mon, 4 Apr 2016 22:05:39 +0000 (23:05 +0100)
committerPaul Martin <paul@paulsputer.com>
Mon, 4 Apr 2016 22:11:53 +0000 (23:11 +0100)
src/main/java/com/gitblit/wicket/pages/MyTicketsPage.java

index 591c7fef2c4cd649e0008f5662191b5326e86f03..bfcedf6e8a8290d383c7d676d4978e0902dd0f65 100644 (file)
@@ -19,7 +19,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 
@@ -343,14 +342,23 @@ public class MyTicketsPage extends RootPage {
         int page = (params != null) ? Math.max(1, WicketUtils.getPage(params)) : 1;
         int pageSize = app().settings().getInteger(Keys.tickets.perPage, 25);
 
-        final List<QueryResult> results = 
+        final List<QueryResult> allResults = 
             StringUtils.isEmpty(searchParam) ? query(qb, page, pageSize, sortBy, desc) : search(searchParam, page, pageSize);
 
-        int totalResults = results.size() == 0 ? 0 : results.get(0).totalResults;
-        buildPager(queryParam, milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, page, pageSize, results.size(), totalResults);
+        List<QueryResult> viewableResults = new ArrayList<>(allResults.size());
+        for (QueryResult queryResult : allResults) {
+               RepositoryModel model = app().repositories().getRepositoryModel(currentUser, queryResult.repository);
+                       
+               if ((model != null) && (currentUser.canView(model))) {
+                       viewableResults.add(queryResult);
+               }
+               }
+            
+        int totalResults = viewableResults.size() == 0 ? 0 : viewableResults.get(0).totalResults;
+        buildPager(queryParam, milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, page, pageSize, viewableResults.size(), totalResults);
 
         final boolean showSwatch = app().settings().getBoolean(Keys.web.repositoryListSwatches, true);
-        add(new TicketListPanel("ticketList", results, showSwatch, true));
+        add(new TicketListPanel("ticketList", viewableResults, showSwatch, true));
     }
 
     protected PageParameters queryParameters(