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);
}