first(); if ($extension && $extension->enabled) { $settings = $extension->settings->pluck('value', 'key')->toArray(); // Si l'option "force_authentik_only" est activée if (!empty($settings['force_authentik_only'])) { // Éviter les boucles de redirection $currentPath = $request->path(); $currentRoute = $request->route() ? $request->route()->getName() : null; // Routes et chemins à exclure de la redirection $excludedRoutes = ['oauth.authentik.redirect', 'oauth.authentik.callback']; $excludedPaths = ['oauth/authentik', 'oauth/authentik/callback']; // Vérifier si on est sur une route ou chemin exclu $isExcludedRoute = in_array($currentRoute, $excludedRoutes); $isExcludedPath = false; foreach ($excludedPaths as $excludedPath) { if (str_starts_with($currentPath, $excludedPath)) { $isExcludedPath = true; break; } } // Ne pas rediriger si on est déjà sur une route Authentik ou si l'utilisateur est connecté if (!$isExcludedRoute && !$isExcludedPath && !auth()->check()) { // Vérifier que la configuration Authentik est complète avant de rediriger if (!empty($settings['client_id']) && !empty($settings['client_secret']) && !empty($settings['base_url'])) { return redirect()->route('oauth.authentik.redirect'); } } } } return $next($request); } }