Graph mail test — récupération PJ Outlook (#874)

Bac à sable DSI. Appels Graph synchrone via PHP-FPM (token utilisateur délégué). Aucun upload SharePoint. IDs en dur issus du drop Nouvel Outlook.

Page jetable — URL directe uniquement. Si step 0 indique Mail.Read absent : ajouter le scope délégué côté Azure AD + se reconnecter à l’ERP (consentement), puis recharger cette page.

@php $verdict = (string) ($summary['verdict'] ?? ''); $summaryClass = str_starts_with($verdict, 'OK') ? 'ok' : (str_starts_with($verdict, 'PARTIEL') ? 'partial' : 'ko'); @endphp
{{ $verdict }}
Total : {{ $summary['total_ms'] ?? '—' }} ms — Binaire : {{ !empty($summary['binary_recovered']) ? 'oui' : 'non' }} @if (!empty($summary['binary_size'])) ({{ $summary['binary_size'] }} octets @if (!empty($summary['size_match'])) ✓ match {{ $summary['expected_size'] }} @else / attendu {{ $summary['expected_size'] }} @endif) @endif
Mail.Read dans JWT : {{ !empty($summary['has_Mail.Read']) ? 'oui' : 'non' }} — messageId résolu : {{ $summary['resolved_message_id'] ?? '—' }}
IDs testés
@foreach ($steps as $i => $step) @endforeach
# Étape OK HTTP ms Détail
{{ $i }} {{ $step['name'] }} {{ !empty($step['ok']) ? 'oui' : 'non' }} {{ $step['http_status'] ?? '—' }} {{ $step['ms'] ?? '—' }}
{{ json_encode($step['detail'] ?? [], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) }}

Recharger la page pour relancer tous les appels. Après ajout Azure de Mail.Read : se déconnecter / reconnecter Microsoft avant de retester.