Aller au contenu principal

Validation des entrées

Toutes les entrées externes doivent être validées avant utilisation.

Règles

  • Form Requests pour toutes les mutations web et API
  • Valider les paramètres de route quand non liés par route model binding
  • Utiliser les enums ou Rule::in() pour les valeurs finies
  • Valider les fichiers par taille, type MIME et extension
  • Normaliser uniquement après validation

Exemple de Form Request

class StoreUserRequest extends FormRequest
{
public function authorize(): bool
{
return $this->user()->can('create', User::class);
}

public function rules(): array
{
return [
'name' => ['required', 'string', 'max:150'],
'email' => ['required', 'email', 'unique:users,email'],
'id_service' => ['required', 'integer', 'exists:services,id_service'],
'id_role' => ['required', 'integer', 'exists:roles,id_role'],
'is_active' => ['sometimes', 'boolean'],
];
}
}

Interdit

// ❌ Jamais
public function store(Request $request)
{
User::create($request->all());
}

// ✅ Toujours
public function store(StoreUserRequest $request): RedirectResponse
{
$user = $this->userService->create($request->validated());
return redirect()->route('admin.users.edit', $user);
}