import { NextRequest, NextResponse } from 'next/server'; const KEYCLOAK_URL = process.env.NEXT_PUBLIC_KEYCLOAK_URL || 'https://security.lions.dev'; const KEYCLOAK_REALM = process.env.NEXT_PUBLIC_KEYCLOAK_REALM || 'btpxpress'; const CLIENT_ID = process.env.NEXT_PUBLIC_KEYCLOAK_CLIENT_ID || 'btpxpress-frontend'; const REDIRECT_URI = process.env.NEXT_PUBLIC_APP_URL ? `${process.env.NEXT_PUBLIC_APP_URL}/auth/callback` : 'https://btpxpress.lions.dev/auth/callback'; export async function GET(request: NextRequest) { console.log('🔐 Login API called'); // GĂ©nĂ©rer un state alĂ©atoire pour CSRF protection const state = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); // Construire l'URL d'autorisation Keycloak const authUrl = new URL(`${KEYCLOAK_URL}/realms/${KEYCLOAK_REALM}/protocol/openid-connect/auth`); authUrl.searchParams.set('client_id', CLIENT_ID); authUrl.searchParams.set('redirect_uri', REDIRECT_URI); authUrl.searchParams.set('response_type', 'code'); authUrl.searchParams.set('scope', 'openid profile email'); authUrl.searchParams.set('state', state); console.log('✅ Redirecting to Keycloak:', authUrl.toString()); // Rediriger vers Keycloak pour l'authentification return NextResponse.redirect(authUrl.toString()); }