Aller au contenu principal

Conventions — Contrôleurs

Les contrôleurs sont des couches d'orchestration minces.

Responsabilités du contrôleur

Autorisé :

  • Accepter des Form Requests typées
  • Appeler $this->authorize() ou middleware de route
  • Déléguer la logique métier aux services
  • Retourner des vues, redirections ou ressources

Interdit :

  • Écrire des requêtes complexes directement dans les actions
  • Modifier des permissions sans log d'audit
  • Mettre la logique de parsing import/export dans les contrôleurs

Pattern action

public function update(UpdateUserRequest $request, User $user): RedirectResponse
{
$this->authorize('update', $user);

$this->userService->update($user, $request->validated());

return redirect()
->route('admin.users.edit', $user)
->with('status', __('Utilisateur mis à jour.'));
}

Pattern store avec service

public function store(StoreUserRequest $request): RedirectResponse
{
$this->authorize('create', User::class);

$user = $this->userService->create($request->validated());

return redirect()
->route('admin.users.edit', $user)
->with('success', 'Utilisateur créé.');
}

Retours JSON (AJAX / API)

public function getLog(string $code): JsonResponse
{
$this->authorize('viewLogs', Application::class);

$lines = $this->logService->getLastLines($code, 300);

return response()->json(['lines' => $lines]);
}