diff --git a/app/Http/Controllers/API/LinkCheckController.php b/app/Http/Controllers/API/LinkCheckController.php index 4385db95..337171c5 100644 --- a/app/Http/Controllers/API/LinkCheckController.php +++ b/app/Http/Controllers/API/LinkCheckController.php @@ -23,7 +23,8 @@ class LinkCheckController extends Controller return response()->json(['linksFound' => false]); } - $linkCount = Link::byUser($request->user()->id) + $linkCount = Link::query() + ->visibleForUser() ->where('url', trim($searchedUrl)) ->count(); diff --git a/app/Http/Controllers/API/LinkController.php b/app/Http/Controllers/API/LinkController.php index d3e3cca2..2991bcfc 100644 --- a/app/Http/Controllers/API/LinkController.php +++ b/app/Http/Controllers/API/LinkController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\API; use App\Http\Controllers\Controller; +use App\Http\Controllers\Traits\ChecksOrdering; use App\Http\Requests\Models\LinkStoreRequest; use App\Http\Requests\Models\LinkUpdateRequest; use App\Models\Link; @@ -13,6 +14,19 @@ use Illuminate\Http\Response; class LinkController extends Controller { + use ChecksOrdering; + + protected array $allowedOrders = [ + 'url', + 'title', + 'description', + 'visibility', + 'status', + 'check_disabled', + 'created_at', + 'updated_at', + ]; + public function __construct() { $this->authorizeResource(Link::class, 'link'); @@ -26,12 +40,14 @@ class LinkController extends Controller */ public function index(Request $request): JsonResponse { + $this->orderBy = $request->input('order_by', 'created_at'); + $this->orderDir = $request->input('order_dir', 'desc'); + + $this->checkOrdering(); + $links = Link::query() ->visibleForUser() - ->orderBy( - $request->input('order_by', 'created_at'), - $request->input('order_dir', 'DESC') - ) + ->orderBy($this->orderBy, $this->orderDir) ->paginate(getPaginationLimit()); return response()->json($links); diff --git a/app/Http/Controllers/API/ListController.php b/app/Http/Controllers/API/ListController.php index c26501bc..dfa544d7 100644 --- a/app/Http/Controllers/API/ListController.php +++ b/app/Http/Controllers/API/ListController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\API; use App\Http\Controllers\Controller; +use App\Http\Controllers\Traits\ChecksOrdering; use App\Http\Requests\Models\ListStoreRequest; use App\Http\Requests\Models\ListUpdateRequest; use App\Models\LinkList; @@ -13,6 +14,17 @@ use Illuminate\Http\Response; class ListController extends Controller { + use ChecksOrdering; + + protected array $allowedOrders = [ + 'id', + 'name', + 'description', + 'visibility', + 'created_at', + 'updated_at', + ]; + /** * Display a listing of the resource. * @@ -21,11 +33,13 @@ class ListController extends Controller */ public function index(Request $request): JsonResponse { + $this->orderBy = $request->input('order_by', 'created_at'); + $this->orderDir = $request->input('order_dir', 'desc'); + + $this->checkOrdering(); + $lists = LinkList::byUser() - ->orderBy( - $request->input('order_by', 'created_at'), - $request->input('order_dir', 'DESC') - ) + ->orderBy($this->orderBy, $this->orderDir) ->paginate(getPaginationLimit()); return response()->json($lists); diff --git a/app/Http/Controllers/API/TagController.php b/app/Http/Controllers/API/TagController.php index e45fcdc3..fd4cf983 100644 --- a/app/Http/Controllers/API/TagController.php +++ b/app/Http/Controllers/API/TagController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\API; use App\Http\Controllers\Controller; +use App\Http\Controllers\Traits\ChecksOrdering; use App\Http\Requests\Models\TagStoreRequest; use App\Http\Requests\Models\TagUpdateRequest; use App\Models\Tag; @@ -13,6 +14,16 @@ use Illuminate\Http\Response; class TagController extends Controller { + use ChecksOrdering; + + protected array $allowedOrders = [ + 'id', + 'name', + 'visibility', + 'created_at', + 'updated_at', + ]; + /** * Display a listing of the resource. * @@ -21,11 +32,13 @@ class TagController extends Controller */ public function index(Request $request): JsonResponse { + $this->orderBy = $request->input('order_by', 'created_at'); + $this->orderDir = $request->input('order_dir', 'desc'); + + $this->checkOrdering(); + $tags = Tag::byUser() - ->orderBy( - $request->input('order_by', 'created_at'), - $request->input('order_dir', 'DESC') - ) + ->orderBy($this->orderBy, $this->orderDir) ->paginate(getPaginationLimit()); return response()->json($tags);