Index: src/main/java/it/finki/charitable/controller/DonationPostController.java
===================================================================
--- src/main/java/it/finki/charitable/controller/DonationPostController.java	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/java/it/finki/charitable/controller/DonationPostController.java	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -127,5 +127,5 @@
                         @RequestParam String sort,
                         @RequestParam(required = false,defaultValue = "") String order) {
-        Page<DonationPost> postList = donationPostService.findPaginated(page,6, sort, order);
+        Page<DonationPost> postList = donationPostService.findPaginated(page,6, sort, order, true);
         if (postList.getSize() == 0) {
             model.addAttribute("noPosts", true);
@@ -204,4 +204,5 @@
         reasonService.save(reason);
         reportPost.getReasons().add(reason);
+        reportPost.setNumReports(reportPost.getNumReports() + 1);
         reportPostService.save(reportPost);
         return String.format("redirect:/post?postid=%d", postid);
Index: src/main/java/it/finki/charitable/controller/ModeratorController.java
===================================================================
--- src/main/java/it/finki/charitable/controller/ModeratorController.java	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/java/it/finki/charitable/controller/ModeratorController.java	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -6,4 +6,5 @@
 import it.finki.charitable.services.ReasonService;
 import it.finki.charitable.services.ReportPostService;
+import org.springframework.data.domain.Page;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Controller;
@@ -33,10 +34,14 @@
 
     @RequestMapping("moderator/approval")
-    public String approval(Model model) {
-        List<DonationPost> postList = donationPostService.findAllByApproved(false);
-        if (postList.size() == 0) {
+    public String approval(Model model,
+                           @RequestParam int page,
+                           @RequestParam String sort,
+                           @RequestParam(required = false,defaultValue = "") String order) {
+        Page<DonationPost> postList = donationPostService.findPaginated(page, 6, sort, order, false);
+        if (postList.getSize() == 0) {
             model.addAttribute("noPosts", true);
             return "postApproval";
         }
+        model.addAttribute("totalPages", postList.getTotalPages());
         model.addAttribute("postList", postList);
         return "postApproval";
@@ -92,7 +97,10 @@
 
     @RequestMapping("/moderator/report")
-    public String reportedPosts(Model model) {
-        List<ReportPost> postList = reportPostService.findAll();
-        if (postList.size() == 0) {
+    public String reportedPosts(Model model,
+                                @RequestParam int page,
+                                @RequestParam String sort,
+                                @RequestParam(required = false,defaultValue = "") String order) {
+        Page<ReportPost> postList = reportPostService.findAll(page, 6, sort, order);
+        if (postList.getSize() == 0) {
             model.addAttribute("noPosts", true);
             return "reportedPosts";
Index: src/main/java/it/finki/charitable/entities/ReportPost.java
===================================================================
--- src/main/java/it/finki/charitable/entities/ReportPost.java	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/java/it/finki/charitable/entities/ReportPost.java	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -2,4 +2,5 @@
 
 import javax.persistence.*;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
@@ -32,4 +33,6 @@
     private List<Reason> reasons = new ArrayList<>();
 
+    private int numReports = 0;
+
     public Long getId() {
         return id;
@@ -55,3 +58,11 @@
         this.reasons = reasons;
     }
+
+    public int getNumReports() {
+        return numReports;
+    }
+
+    public void setNumReports(int numReports) {
+        this.numReports = numReports;
+    }
 }
Index: src/main/java/it/finki/charitable/repository/ReportPostRepository.java
===================================================================
--- src/main/java/it/finki/charitable/repository/ReportPostRepository.java	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/java/it/finki/charitable/repository/ReportPostRepository.java	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -3,4 +3,6 @@
 import it.finki.charitable.entities.DonationPost;
 import it.finki.charitable.entities.ReportPost;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: src/main/java/it/finki/charitable/security/SecurityConfig.java
===================================================================
--- src/main/java/it/finki/charitable/security/SecurityConfig.java	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/java/it/finki/charitable/security/SecurityConfig.java	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -67,5 +67,5 @@
         RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
         if(authentication.getAuthorities().toString().contains("MODERATOR")) {
-            redirectStrategy.sendRedirect(httpServletRequest, httpServletResponse, "/moderator/approval");
+            redirectStrategy.sendRedirect(httpServletRequest, httpServletResponse, "/moderator/approval?page=1&sort=id");
         } else {
             redirectStrategy.sendRedirect(httpServletRequest, httpServletResponse, "/");
Index: src/main/java/it/finki/charitable/services/DonationPostService.java
===================================================================
--- src/main/java/it/finki/charitable/services/DonationPostService.java	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/java/it/finki/charitable/services/DonationPostService.java	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -54,9 +54,9 @@
     }
 
-    public Page<DonationPost> findPaginated(int pageNo, int pageSize, String sort, String order) {
+    public Page<DonationPost> findPaginated(int pageNo, int pageSize, String sort, String order, boolean approved) {
         Sort s = Sort.by(sort);
         s = order.equals("asc") ? s.ascending() : s.descending();
         Pageable pageable = PageRequest.of(pageNo - 1, pageSize, s);
-        return donationPostRepository.findAllByApproved(pageable, true);
+        return donationPostRepository.findAllByApproved(pageable, approved);
     }
 }
Index: src/main/java/it/finki/charitable/services/ReportPostService.java
===================================================================
--- src/main/java/it/finki/charitable/services/ReportPostService.java	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/java/it/finki/charitable/services/ReportPostService.java	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -5,4 +5,8 @@
 import it.finki.charitable.entities.ReportPost;
 import it.finki.charitable.repository.ReportPostRepository;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 
@@ -18,6 +22,9 @@
     }
 
-    public List<ReportPost> findAll() {
-        return reportPostRepository.findAll();
+    public Page<ReportPost> findAll(int pageNo, int pageSize, String sort, String order) {
+        Sort s = Sort.by(sort);
+        s = order.equals("asc") ? s.ascending() : s.descending();
+        Pageable pageable = PageRequest.of(pageNo - 1, pageSize, s);
+        return reportPostRepository.findAll(pageable);
     }
 
Index: src/main/resources/templates/common/navbar.html
===================================================================
--- src/main/resources/templates/common/navbar.html	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/resources/templates/common/navbar.html	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -24,9 +24,9 @@
                     <li class="nav-item">
                         <a sec:authorize="isAnonymous() or hasAuthority('USER')" th:href="@{/album?page=1&sort=id}" class="nav-link px-2 text-white">Posts</a>
-                        <a sec:authorize="hasAuthority('MODERATOR')" th:href="@{/moderator/approval}" class="nav-link px-2 text-white">Posts for approval</a>
+                        <a sec:authorize="hasAuthority('MODERATOR')" th:href="@{/moderator/approval?page=1&sort=id}" class="nav-link px-2 text-white">Posts for approval</a>
                     </li>
                     <li class="nav-item">
                         <a sec:authorize="hasAuthority('USER')" th:href="@{/upload}" class="nav-link px-2 text-white">Upload</a>
-                        <a sec:authorize="hasAuthority('MODERATOR')" th:href="@{/moderator/report}" class="nav-link px-2 text-white">Reported posts</a>
+                        <a sec:authorize="hasAuthority('MODERATOR')" th:href="@{/moderator/report?page=1&sort=id}" class="nav-link px-2 text-white">Reported posts</a>
                     </li>
                 </ul>
Index: src/main/resources/templates/postApproval.html
===================================================================
--- src/main/resources/templates/postApproval.html	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/resources/templates/postApproval.html	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -16,6 +16,25 @@
     <p th:if="${noPosts}">No posts</p>
     <div th:unless="${noPosts}" class="album py-5 bg-light">
+
         <div class="container">
-
+            <div class="row">
+                <div class="col-md-2">
+                    <label class="form-label" for="sortBy">Sort By</label>
+                    <select class="input-group-text" id="sortBy">
+                        <option value="id">Default</option>
+                        <option value="title">Title</option>
+                        <option value="dateDue">Date due</option>
+                        <option value="fundsNeeded">Funds needed</option>
+                    </select>
+                </div>
+                <div class="col-md-2">
+                    <label class="form-label" for="order">Order</label>
+                    <select class="input-group-text" id="order">
+                        <option value="asc">Ascending</option>
+                        <option value="desc">Descending</option>
+                    </select>
+                </div>
+            </div>
+            <br>
             <div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3">
                 <div class="col" th:each="post : ${postList}">
@@ -37,9 +56,13 @@
             </div>
         </div>
-        <hr class="ui-menu-divider" />
+        <hr class="ui-menu-divider"/>
+        <nav>
+            <div id="pagination"></div>
+        </nav>
     </div>
 
 </main>
 <script src="/js/bootstrap.min.js"></script>
+<script id="helper" src="/js/pagination.js" th:data-pages="${totalPages}"></script>
 </body>
 </html>
Index: src/main/resources/templates/reportedPosts.html
===================================================================
--- src/main/resources/templates/reportedPosts.html	(revision 276a8b675a5b68c01f48d3efcbfe41e2f836ed6c)
+++ src/main/resources/templates/reportedPosts.html	(revision 0c3762577315aca1565b0a288c0a9a46f79e55d2)
@@ -17,5 +17,21 @@
     <div th:unless="${noPosts}" class="album py-5 bg-light">
         <div class="container">
-
+            <div class="row">
+                <div class="col-md-2">
+                    <label class="form-label" for="sortBy">Sort By</label>
+                    <select class="input-group-text" id="sortBy">
+                        <option value="id">Default</option>
+                        <option value="numReports">Number of reports</option>
+                    </select>
+                </div>
+                <div class="col-md-2">
+                    <label class="form-label" for="order">Order</label>
+                    <select class="input-group-text" id="order">
+                        <option value="asc">Ascending</option>
+                        <option value="desc">Descending</option>
+                    </select>
+                </div>
+            </div>
+            <br/>
             <div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3">
                 <div class="col" th:each="post : ${postList}">
@@ -30,5 +46,5 @@
                                     <a class="btn btn-sm btn-outline-secondary" th:href="@{/moderator/reportPost(postid=${post.id})}">Open</a>
                                 </div>
-                                <span class="text-muted">Date due: <small th:text="${post.donationPost.dateDue}"></small></span>
+                                <span class="text-muted">Number of reports: <small th:text="${post.numReports}"></small></span>
                             </div>
                         </div>
@@ -38,8 +54,12 @@
         </div>
         <hr class="ui-menu-divider" />
+            <nav>
+                <div id="pagination"></div>
+            </nav>
     </div>
 
 </main>
 <script src="/js/bootstrap.min.js"></script>
+<script id="helper" src="/js/pagination.js" th:data-pages="${totalPages}"></script>
 </body>
 </html>
