info('Testing OIDC Configuration...'); $this->newLine(); // Check if OIDC is enabled $enabled = config('services.oidc.enabled'); $this->line("OIDC Enabled: " . ($enabled ? '✅ Yes' : '❌ No')); // Check configuration values $endpoint = config('services.oidc.endpoint'); $clientId = config('services.oidc.client_id'); $clientSecret = config('services.oidc.client_secret'); $redirect = config('services.oidc.redirect'); $scopes = config('services.oidc.scopes', []); $this->line("OIDC Endpoint: " . ($endpoint ? "✅ {$endpoint}" : '❌ Not set')); $this->line("Client ID: " . ($clientId ? "✅ {$clientId}" : '❌ Not set')); $this->line("Client Secret: " . ($clientSecret ? '✅ Set' : '❌ Not set')); $this->line("Redirect URL: " . ($redirect ? "✅ {$redirect}" : '❌ Not set')); $this->line("Scopes: " . (empty($scopes) ? '❌ Not set' : '✅ ' . implode(', ', $scopes))); $this->newLine(); // Test driver registration try { // Only test driver if we have basic configuration if ($endpoint && $clientId && $clientSecret) { $driver = Socialite::driver('oidc'); $this->line("OIDC Driver: ✅ Successfully registered and accessible"); if ($enabled) { $this->info("✅ OIDC is fully configured and ready to use!"); $this->line("You can test the login flow at: /auth/oidc/redirect"); } else { $this->warn("⚠️ OIDC driver is working but OIDC_ENABLED is false."); } } else { $this->line("OIDC Driver: ✅ Registered (configuration test skipped due to missing values)"); $this->warn("⚠️ OIDC driver is registered but missing required configuration."); $this->line("Please set the following environment variables:"); if (!$enabled) $this->line(" - OIDC_ENABLED=true"); if (!$endpoint) { $this->line(" - OIDC_ENDPOINT=https://your-oidc-provider.com (base URL)"); $this->line(" OR"); $this->line(" - OIDC_ENDPOINT=https://your-oidc-provider.com/.well-known/openid-configuration (full URL)"); } if (!$clientId) $this->line(" - OIDC_CLIENT_ID=your-client-id"); if (!$clientSecret) $this->line(" - OIDC_CLIENT_SECRET=your-client-secret"); } } catch (\InvalidArgumentException $e) { if (str_contains($e->getMessage(), 'Driver [oidc] not supported')) { $this->error("❌ OIDC Driver registration failed: Driver not supported"); } else { $this->error("❌ OIDC Driver error: " . $e->getMessage()); } } catch (\Exception $e) { $this->warn("⚠️ OIDC Driver registered but configuration error: " . $e->getMessage()); } $this->newLine(); return Command::SUCCESS; } }