diff --git a/app/Http/Controllers/API/LinkController.php b/app/Http/Controllers/API/LinkController.php index ba1abf2d..0acf62b1 100644 --- a/app/Http/Controllers/API/LinkController.php +++ b/app/Http/Controllers/API/LinkController.php @@ -16,20 +16,9 @@ class LinkController extends Controller { use ChecksOrdering; - protected array $allowedOrders = [ - 'url', - 'title', - 'description', - 'visibility', - 'status', - 'check_disabled', - 'created_at', - 'updated_at', - ]; - public function __construct() { - $this->allowedOrders = Link::$allowOrderBy; + $this->allowedOrderBy = Link::$allowOrderBy; $this->authorizeResource(Link::class, 'link'); } diff --git a/app/Http/Controllers/FetchController.php b/app/Http/Controllers/FetchController.php index 5c78807d..f6a584e0 100644 --- a/app/Http/Controllers/FetchController.php +++ b/app/Http/Controllers/FetchController.php @@ -28,6 +28,7 @@ class FetchController extends Controller } $tags = Tag::query() + ->visibleForUser() ->where('name', 'like', '%' . escapeSearchQuery($query) . '%') ->oldest('name') ->get(); @@ -58,6 +59,7 @@ class FetchController extends Controller } $tags = LinkList::query() + ->visibleForUser() ->where('name', 'like', '%' . escapeSearchQuery($query) . '%') ->oldest('name') ->get(); @@ -89,6 +91,7 @@ class FetchController extends Controller } $link = Link::query() + ->visibleForUser() ->where('url', trim($query)) ->where('id', '!=', $request->input('ignore_id', 0)) ->first(); diff --git a/app/Http/Controllers/Models/LinkController.php b/app/Http/Controllers/Models/LinkController.php index f3102e96..2260f8e3 100644 --- a/app/Http/Controllers/Models/LinkController.php +++ b/app/Http/Controllers/Models/LinkController.php @@ -19,14 +19,9 @@ class LinkController extends Controller { use ChecksOrdering; - protected array $allowedOrders = [ - 'created_at', - 'url', - 'title', - ]; - public function __construct() { + $this->allowedOrderBy = Link::$allowOrderBy; $this->authorizeResource(Link::class, 'link'); } @@ -94,7 +89,7 @@ class LinkController extends Controller foreach ($duplicates as $duplicateLink) { $msg .= sprintf( ' %s,', - route('links.show', [$duplicateLink->id]), + route('links.show', ['link' => $duplicateLink]), $duplicateLink->shortUrl() ); } diff --git a/app/Http/Controllers/Models/ListController.php b/app/Http/Controllers/Models/ListController.php index a738e877..fbb853ae 100644 --- a/app/Http/Controllers/Models/ListController.php +++ b/app/Http/Controllers/Models/ListController.php @@ -17,14 +17,9 @@ class ListController extends Controller { use ChecksOrdering; - protected array $allowedOrders = [ - 'created_at', - 'name', - 'links_count', - ]; - public function __construct() { + $this->allowedOrderBy = LinkList::$allowOrderBy; $this->authorizeResource(LinkList::class, 'list'); } diff --git a/app/Http/Controllers/Models/TagController.php b/app/Http/Controllers/Models/TagController.php index fad06eec..33dbef36 100644 --- a/app/Http/Controllers/Models/TagController.php +++ b/app/Http/Controllers/Models/TagController.php @@ -6,6 +6,7 @@ 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\Link; use App\Models\Tag; use App\Repositories\TagRepository; use Exception; @@ -97,7 +98,7 @@ class TagController extends Controller */ public function show(Request $request, Tag $tag): View { - $this->allowedOrderBy = Tag::$allowOrderBy; + $this->allowedOrderBy = Link::$allowOrderBy; $this->orderBy = $request->input('orderBy', 'created_at'); $this->orderDir = $request->input('orderDir', 'desc'); diff --git a/app/Models/Link.php b/app/Models/Link.php index 2f0f9518..4209768d 100644 --- a/app/Models/Link.php +++ b/app/Models/Link.php @@ -7,7 +7,6 @@ use App\Audits\Modifiers\LinkStatusModifier; use App\Audits\Modifiers\ListRelationModifier; use App\Audits\Modifiers\TagRelationModifier; use App\Audits\Modifiers\VisibilityModifier; -use App\Enums\ModelAttribute; use App\Jobs\SaveLinkToWaybackmachine; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; diff --git a/tests/Controller/Models/LinkControllerTest.php b/tests/Controller/Models/LinkControllerTest.php index c2802899..ec329817 100644 --- a/tests/Controller/Models/LinkControllerTest.php +++ b/tests/Controller/Models/LinkControllerTest.php @@ -32,7 +32,7 @@ class LinkControllerTest extends TestCase ''; Http::fake([ - 'example.com' => Http::response($testHtml), + '*' => Http::response($testHtml), ]); Queue::fake(); @@ -109,6 +109,28 @@ class LinkControllerTest extends TestCase $flashMessages->contains('message', trans('link.duplicates_found')); } + public function testStoreRequestWithExistingPrivateLink(): void + { + Link::factory()->create(['url' => 'https://existing-private-link.com', 'user_id' => 2, 'visibility' => 3]); + + $this->post('links', [ + 'url' => 'https://existing-private-link.com', + 'visibility' => 1, + ])->assertRedirect('links/2'); + + $this->assertDatabaseHas('links', [ + 'url' => 'https://existing-private-link.com', + 'user_id' => 2, + 'visibility' => 3, + ]); + + $this->assertDatabaseHas('links', [ + 'url' => 'https://existing-private-link.com', + 'user_id' => 1, + 'visibility' => 1, + ]); + } + public function testStoreRequestWithBrokenUrl(): void { Http::fake([