Skip to content

Commit 0041a65

Browse files
committed
Update VideoConntroller
1 parent 15f2e22 commit 0041a65

1 file changed

Lines changed: 31 additions & 5 deletions

File tree

app/Http/Controllers/Api/VideoController.php

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use App\Http\Requests\StoreCommentUpdateRequest;
1212
use App\Http\Requests\StoreVideoRequest;
1313
use App\Http\Requests\UpdateVideoRequest;
14+
use App\Http\Resources\AccountCompactResource;
1415
use App\Http\Resources\CommentCaptionEditResource;
1516
use App\Http\Resources\CommentReplyCaptionEditResource;
1617
use App\Http\Resources\CommentReplyResource;
@@ -61,20 +62,36 @@ public function __construct()
6162

6263
public function showAutocompleteTags(Request $request)
6364
{
64-
$request->validate(['q' => 'required|string|min:2|max:60']);
65+
$validated = $request->validate(['q' => 'required|alpha_dash|min:2|max:60']);
6566

66-
$hashtags = Hashtag::where('name', 'like', $request->input('q').'%')->whereCanSearch(true)->limit(10)->get();
67+
$q = trim($validated['q']);
68+
69+
$escaped = $this->escapeLike($q);
70+
71+
$hashtags = Hashtag::where('name', 'like', $escaped.'%')->whereCanSearch(true)->limit(10)->get();
6772

6873
return HashtagResource::collection($hashtags);
6974
}
7075

7176
public function showAutocompleteAccounts(Request $request)
7277
{
73-
$request->validate(['q' => 'required|string|min:2|max:90']);
78+
$validated = $request->validate([
79+
'q' => [
80+
'required',
81+
'string',
82+
'min:2',
83+
'max:90',
84+
'regex:/^[A-Za-z0-9.\-_@]+$/',
85+
],
86+
]);
87+
88+
$q = trim($validated['q']);
7489

75-
$profiles = Profile::where('username', 'like', $request->input('q').'%')->where('is_hidden', false)->limit(10)->get();
90+
$escaped = $this->escapeLike($q);
7691

77-
return ProfileResource::collection($profiles);
92+
$profiles = Profile::where('username', 'like', $escaped.'%')->where('is_hidden', false)->limit(10)->get();
93+
94+
return AccountCompactResource::collection($profiles);
7895
}
7996

8097
/**
@@ -767,4 +784,13 @@ public function getAutocompleteHashtag(GetMentionAutocomplete $request)
767784

768785
return HashtagResource::collection($res);
769786
}
787+
788+
private function escapeLike(string $value): string
789+
{
790+
return str_replace(
791+
['\\', '%', '_'],
792+
['\\\\', '\\%', '\\_'],
793+
$value
794+
);
795+
}
770796
}

0 commit comments

Comments
 (0)