Skip to content

Commit ea0aabd

Browse files
authored
Merge pull request #38 from freebuu/fix-upload-functional
fixes in upload functional
2 parents a3c8a6f + e06163b commit ea0aabd

File tree

3 files changed

+24
-46
lines changed

3 files changed

+24
-46
lines changed

routes/api.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?php
22

3-
use App\Http\Middleware\VerifyCsrfToken;
3+
use \Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
44
use Illuminate\Support\Facades\Route;
55
use Murdercode\TinymceEditor\Http\Controllers\TinyImageController;
66
use Murdercode\TinymceEditor\Http\Middleware\TinymceMiddleware;
77

88
// Without CSRF protection
9-
Route::post('/upload', [TinyImageController::class, 'upload'])->name('tinymce.upload')
9+
Route::post('/upload', TinyImageController::class)->name('tinymce.upload')
1010
->withoutMiddleware([VerifyCsrfToken::class])
1111
->middleware(TinymceMiddleware::class);

src/Http/Controllers/TinyImageController.php

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,28 @@
99

1010
class TinyImageController
1111
{
12-
public function upload(Request $request): JsonResponse
13-
{
14-
$validator = $this->validateRequest($request);
15-
if ($validator->fails()) {
16-
return response()->json(['error' => $validator->errors()->first()]);
17-
}
18-
19-
$imageFolder = config('nova-tinymce-editor.extra.upload_images.folder', 'images');
20-
reset($_FILES);
21-
$temp = current($_FILES);
22-
if (is_uploaded_file($temp['tmp_name'])) {
23-
$file = Storage::disk(config('nova-tinymce-editor.extra.upload_images.disk', 'public'))->putFile($imageFolder, $temp['tmp_name']);
24-
25-
return response()->json(['location' => Storage::disk(config('nova-tinymce-editor.extra.upload_images.disk', 'public'))->url($file)]);
26-
} else {
27-
return response()->json(['error' => 'Failed to move uploaded file.']);
28-
}
2912

30-
}
31-
32-
public function validateRequest(Request $request): \Illuminate\Validation\Validator
13+
public function __invoke(Request $request): JsonResponse
3314
{
34-
$maxSize = config('nova-tinymce-editor.extra.upload_images.maxSize', 2048);
35-
$validator = Validator::make($request->all(), [
36-
'file' => 'required|image|mimes:jpeg,png,jpg,gif|max:'.$maxSize,
15+
$request->validate([
16+
'file' => [
17+
'required',
18+
'image',
19+
'mimes:jpeg,png,jpg,gif',
20+
'max:' . config('nova-tinymce-editor.extra.upload_images.maxSize', 2048),
21+
],
3722
]);
38-
39-
return $validator;
23+
$disk = config('nova-tinymce-editor.extra.upload_images.disk');
24+
try{
25+
$file = $request->file('file')
26+
->storePublicly(
27+
config('nova-tinymce-editor.extra.upload_images.folder'),
28+
compact('disk')
29+
);
30+
}catch (\Throwable $e){
31+
report($e);
32+
return response()->json(['error' => 'Failed to move uploaded file.']);
33+
}
34+
return response()->json(['location' => Storage::disk($disk)->url($file)]);
4035
}
4136
}

src/Http/Middleware/TinymceMiddleware.php

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Murdercode\TinymceEditor\Http\Middleware;
44

55
use Closure;
6+
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
67

78
class TinymceMiddleware
89
{
@@ -14,27 +15,9 @@ public function handle($request, Closure $next)
1415
*/
1516
$isActive = config('nova-tinymce-editor.extra.upload_images.enabled') ?? false;
1617
if (! $isActive) {
17-
header('HTTP/1.1 500 Server Error');
18-
19-
return response()->json(['error' => 'Server error']);
20-
}
21-
22-
/**
23-
* Check if the request coming from the same origin
24-
*/
25-
$accepted_origins = [rtrim(config('app.url'), '/')];
26-
$origin = rtrim($_SERVER['HTTP_ORIGIN'], '/');
27-
28-
if (isset($origin)) {
29-
if (in_array($origin, $accepted_origins)) {
30-
header('Access-Control-Allow-Origin: ' . $origin);
31-
} else {
32-
header('HTTP/1.1 403 Origin Denied');
33-
return response()->json(['error' => 'Origin denied']);
34-
}
18+
throw new NotFoundHttpException();
3519
}
3620

37-
3821
return $next($request);
3922
}
4023
}

0 commit comments

Comments
 (0)