{"record":{"id":"cf10e740b84e8335","repo":"BookStackApp/BookStack","slug":"errors-social-driver-not-configured","errorCode":null,"errorMessage":"errors.social_driver_not_configured","messagePattern":"errors\\.social_driver_not_configured","errorType":"exception","errorClass":"SocialDriverNotConfigured","httpStatus":null,"severity":"error","filePath":"app/Access/SocialDriverManager.php","lineNumber":132,"sourceCode":"\n    protected function getDriverConfigProperty(string $driver, string $property): mixed\n    {\n        return config(\"services.{$driver}.{$property}\");\n    }\n\n    /**\n     * Ensure the social driver is correct and supported.\n     *\n     * @throws SocialDriverNotConfigured\n     */\n    public function ensureDriverActive(string $driverName): void\n    {\n        if (!in_array($driverName, $this->validDrivers)) {\n            abort(404, trans('errors.social_driver_not_found'));\n        }\n\n        if (!$this->checkDriverConfigured($driverName)) {\n            throw new SocialDriverNotConfigured(trans('errors.social_driver_not_configured', ['socialAccount' => Str::title($driverName)]));\n        }\n    }\n\n    /**\n     * Check a social driver has been configured correctly.\n     */\n    protected function checkDriverConfigured(string $driver): bool\n    {\n        $lowerName = strtolower($driver);\n        $configPrefix = 'services.' . $lowerName . '.';\n        $config = [config($configPrefix . 'client_id'), config($configPrefix . 'client_secret'), config('services.callback_url')];\n\n        return !in_array(false, $config) && !in_array(null, $config);\n    }\n}\n","sourceCodeStart":114,"sourceCodeEnd":148,"githubUrl":"https://github.com/BookStackApp/BookStack/blob/18f8469a1c72f8cc8497e9372635e6dea5028071/app/Access/SocialDriverManager.php#L114-L148","documentation":"SocialDriverNotConfigured thrown by ensureDriverActive when the requested social driver name is in the valid list (e.g. github, google, okta) but its service config is empty, meaning the admin has enabled/routed to a driver that was never configured. Input at fault: a driver name whose services.{driver}.* config values are missing.","triggerScenarios":"Thrown at app/Access/SocialDriverManager.php:132 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Configure the social driver's credentials in .env (e.g. GITHUB_APP_ID, GITHUB_APP_SECRET) so services.{driver} is populated","If the driver is not intended to be used, remove or correct the link/route that activated it","Check config/services.php overrides have not blanked out the driver settings"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"18f8469a1c72f8cc8497e9372635e6dea5028071","analyzedAt":"2026-09-02T19:49:33.068Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}