+
+ /**
+ * Add a custom socialite driver to be used.
+ * Driver name should be lower_snake_case.
+ * Config array should mirror the structure of a service
+ * within the `Config/services.php` file.
+ * Handler should be a Class@method handler to the SocialiteWasCalled event.
+ */
+ public function addSocialDriver(
+ string $driverName,
+ array $config,
+ string $socialiteHandler,
+ callable $configureForRedirect = null
+ ) {
+ $this->validSocialDrivers[] = $driverName;
+ config()->set('services.' . $driverName, $config);
+ config()->set('services.' . $driverName . '.redirect', url('/login/service/' . $driverName . '/callback'));
+ config()->set('services.' . $driverName . '.name', $config['name'] ?? $driverName);
+ Event::listen(SocialiteWasCalled::class, $socialiteHandler);
+ if (!is_null($configureForRedirect)) {
+ $this->configureForRedirectCallbacks[$driverName] = $configureForRedirect;
+ }
+ }