trypost/app/Http/Requests/Api/Post/StoreMediaRequest.php

40 lines
962 B
PHP
Raw Normal View History

<?php
declare(strict_types=1);
namespace App\Http\Requests\Api\Post;
use App\Enums\Media\Type as MediaType;
use Illuminate\Foundation\Http\FormRequest;
class StoreMediaRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
/**
* @return array<string, array<int, string>>
*/
public function rules(): array
{
$allowedMimes = [
...MediaType::Image->allowedMimeTypes(),
...MediaType::Video->allowedMimeTypes(),
...MediaType::Document->allowedMimeTypes(),
];
return [
// Use the largest per-type cap as the upper bound; per-type
// and per-post enforcement happens in the controller.
'media' => [
'required',
'file',
'max:'.MediaType::Video->maxSizeInKb(),
'mimetypes:'.implode(',', $allowedMimes),
],
];
}
}