Fix: Connexion des pages de détails aux APIs backend avec authentification cookies

- Mise à jour de services/api.ts pour supporter l'authentification par cookies HttpOnly
  * Ajout de withCredentials: true dans l'intercepteur de requêtes
  * Modification de l'intercepteur de réponse pour gérer les 401 sans localStorage
  * Utilisation de sessionStorage pour returnUrl au lieu de localStorage
  * Suppression des tentatives de nettoyage de tokens localStorage (gérés par cookies)

- Connexion des pages de détails à apiService au lieu de fetch direct:
  * app/(main)/chantiers/[id]/page.tsx → apiService.chantiers.getById()
  * app/(main)/chantiers/[id]/budget/page.tsx → apiService.budgets.getByChantier()
  * app/(main)/clients/[id]/page.tsx → apiService.clients.getById()
  * app/(main)/materiels/[id]/page.tsx → apiService.materiels.getById()

Avantages:
- Gestion automatique de l'authentification via cookies HttpOnly (plus sécurisé)
- Redirection automatique vers /api/auth/login en cas de 401
- Code plus propre et maintenable
- Gestion d'erreurs cohérente dans toute l'application

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
DahoudG
2025-10-31 12:04:35 +00:00
parent a91a34dbf8
commit be04ef16d9
5 changed files with 32 additions and 55 deletions

View File

@@ -10,6 +10,7 @@ import { Calendar } from 'primereact/calendar';
import { DataTable } from 'primereact/datatable';
import { Column } from 'primereact/column';
import { Timeline } from 'primereact/timeline';
import { apiService } from '@/services/api';
interface Materiel {
id: number;
@@ -60,15 +61,11 @@ export default function MaterielDetailsPage() {
const loadMateriel = async () => {
try {
setLoading(true);
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'https://api.lions.dev/btpxpress';
const response = await fetch(`${API_URL}/api/v1/materiels/${id}`);
if (response.ok) {
const data = await response.json();
setMateriel(data);
}
const data = await apiService.materiels.getById(Number(id));
setMateriel(data);
} catch (error) {
console.error('Erreur:', error);
console.error('Erreur lors du chargement du matériel:', error);
// L'intercepteur API gérera automatiquement la redirection si 401
} finally {
setLoading(false);
}