Files
SkinbaseNova/.deploy/artwork-evolution-release/app/Http/Requests/Posts/CreatePostRequest.php
2026-04-18 17:02:56 +02:00

44 lines
1.8 KiB
PHP

<?php
namespace App\Http\Requests\Posts;
use Illuminate\Foundation\Http\FormRequest;
class CreatePostRequest extends FormRequest
{
public function authorize(): bool
{
return (bool) $this->user();
}
public function rules(): array
{
return [
'type' => ['required', 'string', 'in:text,artwork_share,upload,achievement'],
'visibility' => ['required', 'string', 'in:public,followers,private'],
'body' => ['nullable', 'string', 'max:2000'],
'targets' => ['nullable', 'array', 'max:1'],
'targets.*.type' => ['required_with:targets', 'string', 'in:artwork'],
'targets.*.id' => ['required_with:targets', 'integer', 'min:1'],
'link_preview' => ['nullable', 'array'],
'link_preview.url' => ['nullable', 'string', 'url', 'max:2048'],
'link_preview.title' => ['nullable', 'string', 'max:300'],
'link_preview.description' => ['nullable', 'string', 'max:500'],
'link_preview.image' => ['nullable', 'string', 'url', 'max:2048'],
'link_preview.site_name' => ['nullable', 'string', 'max:100'],
'tagged_users' => ['nullable', 'array', 'max:10'],
'tagged_users.*.id' => ['required_with:tagged_users', 'integer', 'min:1'],
'tagged_users.*.username' => ['required_with:tagged_users', 'string', 'max:50'],
'tagged_users.*.name' => ['nullable', 'string', 'max:100'],
'publish_at' => ['nullable', 'date', 'after:now'],
];
}
public function messages(): array
{
return [
'body.max' => 'Post body cannot exceed 2,000 characters.',
];
}
}