ldc-bien-etre-animal/app/Http/Requests/JoinGroupRequest.php
2026-09-02 17:14:01 +02:00

76 lines
2.5 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Requests;
use App\Http\Requests\Concerns\HasEmailRateLimit;
use Illuminate\Foundation\Http\FormRequest;
use Uwil\LaravelCommon\Helpers\ToolboxHelper;
use Illuminate\Validation\Validator;
class JoinGroupRequest extends FormRequest
{
use HasEmailRateLimit;
public function authorize(): bool
{
return true;
}
/**
* @return array<string, mixed>
*/
public function rules(): array
{
ToolboxHelper::validateRecaptcha($this);
return [
'lastName' => ['required', 'string', 'min:3', 'max:50'],
'firstName' => ['required', 'string', 'min:3','max:50'],
'email' => ['required', 'email', 'email:strict,rfc,spoof', 'max:255'],
'role' => ['required', 'string', 'min:3','max:30'],
'company' => ['required', 'string', 'min:3','max:60'],
'community' => ['required', 'string'],
'phone' => ['required', 'string', 'min:10','max:10', 'regex:/^[0-9+\-\s]+$/'],
'message' => ['required', 'string', 'min:5', 'max:255'],
'supportsManifesto' => ['nullable', 'boolean'],
'acceptsUsage' => ['required', 'accepted'],
];
}
/**
* @return array<string, string>
*/
public function messages(): array
{
return [
'lastName.required' => 'Le nom est obligatoire.',
'firstName.required' => 'Le prénom est obligatoire.',
'email.required' => "L'adresse e-mail est obligatoire.",
'email.email' => "L'adresse e-mail n'est pas valide.",
'role.required' => 'La fonction est obligatoire.',
'company.required' => 'La société est obligatoire.',
'community.required' => 'Veuillez sélectionner une communauté.',
'phone.required' => 'Le numéro de téléphone est obligatoire.',
'message.required' => 'Le message est obligatoire.',
'acceptsUsage.accepted' => "Vous devez accepter l'utilisation de vos données.",
'phone.regex' => 'Le numéro de téléphone ne doit contenir que des chiffres.',
];
}
protected function rateLimitPrefix(): string
{
return 'join-group';
}
protected function rateLimitMessageKey(): string
{
return 'validation.too_many_attempts';
}
public function withValidator(Validator $validator): void
{
$validator->after(fn (Validator $v) => $this->applyEmailRateLimit($v));
}
}