import Image from 'next/image'; import { redirect } from 'next/navigation'; import { auth, isAuthentikConfigured, signIn } from '@/lib/auth'; export const metadata = { title: 'Connexion — ITA ITO' }; const ERRORS: Record = { AccessDenied: "Ce compte n'a pas accès à cette application.", Configuration: "La configuration de la connexion est incomplète. Prévenez l'administrateur.", Verification: 'Le lien de connexion a expiré. Réessayez.', }; export default async function LoginPage({ searchParams, }: { searchParams: Promise<{ error?: string; from?: string }>; }) { const { error, from } = await searchParams; // Someone who is already signed in has no business on this page. if (await auth()) { redirect(from && from.startsWith('/admin') ? from : '/admin'); } const providerName = process.env.AUTHENTIK_DISPLAY_NAME?.trim() || 'Loxi'; return (
ITA ITO

Horaires de la boutique

Réservé à l’équipe ITA ITO.

{error ? (

{ERRORS[error] ?? 'La connexion a échoué. Réessayez.'}

) : null} {!isAuthentikConfigured ? (

La connexion n’est pas configurée : AUTH_AUTHENTIK_ID,{' '} AUTH_AUTHENTIK_SECRET et{' '} AUTH_AUTHENTIK_ISSUER doivent être renseignés.

) : (
{ 'use server'; await signIn('authentik', { redirectTo: from && from.startsWith('/admin') ? from : '/admin', }); }} >
)}
); }