import { auth } from '@/lib/auth'; export const metadata = { title: 'Tableau de bord — ITA ITO' }; export default async function AdminHome() { const session = await auth(); const user = session?.user; const isAdmin = user?.role === 'admin'; return (

Tableau de bord

Connecté en tant que {user?.email} ({isAdmin ? 'administrateur' : 'lecture seule'}).

{!isAdmin ? : null}
); } /** * A read-only account has exactly two causes, fixed in completely different * places: either the identity provider sent no groups at all, or it sent * groups that do not include the one that grants write access. Saying which * turns a support conversation into a thirty-second fix. */ function ReadOnlyExplanation({ groups, expected }: { groups: string[]; expected: string }) { const claimMissing = groups.length === 0; return (

Pourquoi ce compte est-il en lecture seule ?

Groupe donnant l’accès en écriture
{expected || '(non configuré)'}
Groupes reçus d’Authentik
{claimMissing ? 'aucun — le claim « groups » est absent' : groups.join(', ')}

{claimMissing ? ( <> Authentik n’envoie aucun groupe. Dans le provider OAuth2/OpenID, vérifiez que le scope{' '} profile est bien sélectionné et que{' '} Include claims in id_token est activé. ) : ( <> Authentik envoie bien des groupes, mais pas celui attendu. Ajoutez ce compte au groupe{' '} {expected}, ou corrigez{' '} AUTHENTIK_ADMIN_GROUP pour qu’il corresponde à l’un des groupes ci-dessus. )}

Le rôle est fixé à la connexion : après correction, déconnectez-vous et reconnectez-vous.

); }