refactor: move duplicate validation to DuplicateMediaRequest FormRequest

This commit is contained in:
Paulo Castellano 2026-04-01 13:01:07 -03:00
parent 29bc7deb21
commit 5e1f9eaa82
2 changed files with 28 additions and 9 deletions

View file

@ -4,6 +4,7 @@
namespace App\Http\Controllers\App;
use App\Http\Requests\App\Media\DuplicateMediaRequest;
use App\Http\Requests\App\Media\StoreChunkedMediaRequest;
use App\Http\Requests\App\Media\StoreMediaRequest;
use App\Models\Media;
@ -15,7 +16,6 @@
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
class MediaController extends Controller
{
@ -114,18 +114,12 @@ public function reorder(Request $request): JsonResponse
return response()->json(['success' => true]);
}
public function duplicate(Media $media, Request $request): JsonResponse
public function duplicate(Media $media, DuplicateMediaRequest $request): JsonResponse
{
$sourceModel = $media->mediable;
$this->authorizeModelOwnership($sourceModel, $request);
$request->validate([
'targets' => ['required', 'array', 'max:50'],
'targets.*.model' => ['required', 'string', Rule::in(['postPlatform', 'workspace', 'user'])],
'targets.*.model_id' => ['required', 'string'],
]);
$targets = $request->input('targets', []);
$targets = $request->validated('targets', []);
$duplicates = [];
foreach ($targets as $target) {

View file

@ -0,0 +1,25 @@
<?php
declare(strict_types=1);
namespace App\Http\Requests\App\Media;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class DuplicateMediaRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'targets' => ['required', 'array', 'max:50'],
'targets.*.model' => ['required', 'string', Rule::in(['postPlatform', 'workspace', 'user'])],
'targets.*.model_id' => ['required', 'string'],
];
}
}