Skip to content

Commit 1c43aa8

Browse files
committed
Improved validation
bugfixes
1 parent 9f06ef6 commit 1c43aa8

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

app/Http/Controllers/UserController.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ public function AddUpdateLink($id = 0)
200200
public function saveLink(request $request)
201201
{
202202
$request->validate([
203-
'link' => 'sometimes|url',
203+
'link' => 'sometimes|exturl',
204204
]);
205205

206206
$linkType = LinkType::find($request->linktype_id);
@@ -476,7 +476,7 @@ public function saveLink(request $request)
476476
}
477477

478478
if(empty($links->button_id)) {
479-
return redirect(route('showButtons')); die;
479+
throw new \Exception('Invalid link');
480480
}
481481

482482
$links->save();
@@ -715,7 +715,7 @@ public function showCSS(request $request)
715715
public function editLink(request $request)
716716
{
717717
$request->validate([
718-
'link' => 'required|url',
718+
'link' => 'required|exturl',
719719
'title' => 'required',
720720
'button' => 'required',
721721
]);
@@ -1055,7 +1055,7 @@ public function deleteUser(request $request)
10551055
public function delProfilePicture()
10561056
{
10571057
$userId = Auth::user()->id;
1058-
1058+
10591059
// Delete the user's current avatar if it exists
10601060
while (findAvatar($userId) !== "error.error") {
10611061
$avatarName = findAvatar($userId);
@@ -1154,10 +1154,11 @@ public function importData(Request $request)
11541154
$user->littlelink_description = $sanitizedText;
11551155
}
11561156

1157-
$allowedExtensions = array('jpeg', 'jpg', 'png', 'webp');
1158-
$userExtension = strtolower($userData['image_extension']);
1159-
11601157
if (isset($userData['image_data'])) {
1158+
1159+
$allowedExtensions = array('jpeg', 'jpg', 'png', 'webp');
1160+
$userExtension = strtolower($userData['image_extension']);
1161+
11611162
if (in_array($userExtension, $allowedExtensions)) {
11621163
// Decode the image data from Base64
11631164
$imageData = base64_decode($userData['image_data']);
@@ -1186,11 +1187,11 @@ public function importData(Request $request)
11861187
foreach ($userData['links'] as $linkData) {
11871188

11881189
$validatedData = Validator::make($linkData, [
1189-
'link' => 'nullable|url',
1190+
'link' => 'nullable|exturl',
11901191
]);
11911192

11921193
if ($validatedData->fails()) {
1193-
throw new \Exception('Invalid link');
1194+
print_r($linkData); die;
11941195
}
11951196

11961197
$newLink = new Link();
@@ -1222,7 +1223,6 @@ public function importData(Request $request)
12221223
// Save the new link to the database
12231224
$newLink->save();
12241225
}
1225-
12261226
return redirect('studio/profile')->with('success', __('messages.Profile updated successfully!'));
12271227
} catch (\Exception $e) {
12281228
return redirect('studio/profile')->with('error', __('messages.An error occurred while updating your profile.'));
@@ -1252,7 +1252,7 @@ public function editIcons(Request $request)
12521252
$validationRules = [];
12531253

12541254
foreach ($inputKeys as $platform) {
1255-
$validationRules[$platform] = 'nullable|url|max:255';
1255+
$validationRules[$platform] = 'nullable|exturl|max:255';
12561256
}
12571257

12581258
$request->validate($validationRules);

app/Providers/AppServiceProvider.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,9 @@ public function boot()
3737

3838
return $query->count() === 0;
3939
});
40+
Validator::extend('exturl', function ($attribute, $value, $parameters, $validator) {
41+
$allowed_schemes = ['http', 'https', 'mailto', 'tel'];
42+
return in_array(parse_url($value, PHP_URL_SCHEME), $allowed_schemes, true);
43+
});
4044
}
4145
}

0 commit comments

Comments
 (0)