Rework socialite integration (#14367)

* Rework socialite integration

Prevents unnecessary work each boot

* Update SocialiteController.php

* Gen 2
This commit is contained in:
Jellyfrog
2022-10-07 20:52:55 +02:00
committed by GitHub
parent ff5b565fec
commit b31b992020
7 changed files with 52 additions and 47 deletions

View File

@@ -40,6 +40,7 @@ class SocialiteController extends Controller
public function __construct()
{
app()->register(\SocialiteProviders\Manager\ServiceProvider::class);
$this->injectConfig();
}

View File

@@ -0,0 +1,44 @@
<?php
namespace App\Listeners;
use LibreNMS\Config;
use Log;
class SocialiteWasCalledListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param \SocialiteProviders\Manager\SocialiteWasCalled $event
* @return void
*/
public function handle(\SocialiteProviders\Manager\SocialiteWasCalled $event): void
{
foreach (Config::get('auth.socialite.configs', []) as $provider => $config) {
// Treat not set as "disabled"
if (! isset($config['listener'])) {
continue;
}
$listener = $config['listener'];
if (class_exists($listener)) {
(new $listener)->handle($event);
return;
}
Log::error("Wrong value for auth.socialite.configs.$provider.listener set, class: '$listener' does not exist!");
}
}
}

View File

@@ -30,6 +30,9 @@ class EventServiceProvider extends ServiceProvider
\Illuminate\Database\Events\StatementPrepared::class => [
\App\Listeners\LegacyQueryListener::class,
],
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
\App\Listeners\SocialiteWasCalledListener::class,
],
];
/**

View File

@@ -1,41 +0,0 @@
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use LibreNMS\Config;
class SocialiteListenersServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
foreach (Config::get('auth.socialite.configs', []) as $provider => $config) {
// Treat not set as "disabled"
if (! isset($config['listener'])) {
continue;
}
$listener = $config['listener'];
if (class_exists($listener)) {
$this->app['events']->listen(\SocialiteProviders\Manager\SocialiteWasCalled::class, "$listener@handle");
} else {
$this->app['log']->error("Wrong value for auth.socialite.configs.$provider.listener set, class: '$listener' does not exist!");
}
}
}
}

View File

@@ -89,7 +89,8 @@
"laravel": {
"dont-discover": [
"nunomaduro/laravel-console-summary",
"facade/ignition"
"facade/ignition",
"socialiteproviders/manager"
]
}
},

3
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "5f22d1ad8c4de6777b2690d0115f7afe",
"content-hash": "807216c31606cc7c4fbc5f0a3d05bc94",
"packages": [
{
"name": "amenadiel/jpgraph",
@@ -12446,6 +12446,7 @@
"ext-pcre": "*",
"ext-pdo": "*",
"ext-session": "*",
"ext-simplexml": "*",
"ext-xml": "*",
"ext-zlib": "*"
},

View File

@@ -173,7 +173,6 @@ return [
/*
* Package Service Providers...
*/
\SocialiteProviders\Manager\ServiceProvider::class,
/*
* LibreNMS Service Providers...
@@ -186,9 +185,6 @@ return [
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\Providers\SocialiteListenersServiceProvider::class,
App\Providers\ComposerServiceProvider::class,
App\Providers\DatastoreServiceProvider::class,
App\Providers\SnmptrapProvider::class,