From 42fa8304ddb811b0f725f245130f70c0f5e86a6c Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 04 Nov 2025 06:12:02 +0000
Subject: [PATCH] =Refactored LoginManager to be more extensible and configurable, as well as an AjaxRateLimiter

---
 inc/rest/routes/FavouritesRoutes.php |   52 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/inc/rest/routes/FavouritesRoutes.php b/inc/rest/routes/FavouritesRoutes.php
index 5ab3310..b1483b3 100644
--- a/inc/rest/routes/FavouritesRoutes.php
+++ b/inc/rest/routes/FavouritesRoutes.php
@@ -121,17 +121,26 @@
 				'success'	=> false,
 				'message'	=> 'No user set'
 			];
-		}elseif (count($args) === 1 || (array_key_exists('all', $args) && $args['all'] === true)) {
+		}
+		// Check HTTP cache headers for user-specific data
+		$cache_check = $this->checkUserHeaders($request, $args['user'], 'favourites');
+		if ($cache_check) {
+			return $cache_check;
+		}
+
+		if (count($args) === 1 || (array_key_exists('all', $args) && $args['all'] === true)) {
             $result = $this->getAllFavourites($args['user']);
 		} else {
 			$result = $this->cache->remember(
 				$args,
 				function() use ($args) {
-					return $this->getFilteredFavourites($args);
+					$response = new WP_REST_Response($this->getFilteredFavourites($args));
+					return $this->addCacheHeaders($response);
 				}
 			);
 		}
-		return new WP_REST_Response($result);
+		$response = new WP_REST_Response($result);
+		return $this->addCacheHeaders($response);
     }
 
 	protected function getFilteredFavourites(array $args):array
@@ -382,6 +391,20 @@
     public function getLists(WP_REST_Request $request):WP_REST_Response
     {
         $user_id = get_current_user_id();
+
+		if (!$user_id || !$this->userCheck($user_id)) {
+			return new WP_REST_Response([
+				'success' => false,
+				'message' => 'Invalid user'
+			]);
+		}
+
+		// Check HTTP cache headers
+		$cache_check = $this->checkUserHeaders($request, $user_id, 'favourites_lists');
+		if ($cache_check) {
+			return $cache_check;
+		}
+
         $list_id = $request->get_param('id');
 
         if ($list_id) {
@@ -390,7 +413,8 @@
             $response = $this->getAvailableLists($user_id);
         }
 
-        return new WP_REST_Response($response);
+        $response = new WP_REST_Response($response);
+		return $this->addCacheHeaders($response);
     }
     /**
      * Get lists available to a user (owned and shared)
@@ -798,8 +822,21 @@
      */
     public function getShares(WP_REST_Request $request):WP_REST_Response
     {
-        $list_id = $request->get_param('list_id');
-        $user_id = get_current_user_id();
+		$user_id = $request->get_param('user');
+
+		if (!$user_id || !$this->userCheck($user_id)) {
+			return new WP_REST_Response([
+				'success' => false,
+				'message' => 'Invalid user'
+			]);
+		}
+
+		// Check HTTP cache headers
+		$cache_check = $this->checkUserHeaders($request, $user_id, 'favourites_shares');
+		if ($cache_check) {
+			return $cache_check;
+		}
+		$list_id = $request->get_param('list_id');
 
         if (!$list_id) {
             return $this->createErrorResponse(
@@ -891,7 +928,8 @@
             // Cache the results
             $this->cache->set($key, $response_data, 'favourites_list_shares');
 
-            return new WP_REST_Response($response_data);
+			$response = new WP_REST_Response($response_data);
+			return $this->addCacheHeaders($response);
 
         } catch (Exception $e) {
             return $this->createErrorResponse(

--
Gitblit v1.10.0