fix: oauthseeder
This commit is contained in:
@@ -4,6 +4,7 @@ namespace Database\Seeders;
|
|||||||
|
|
||||||
use App\Models\OauthSetting;
|
use App\Models\OauthSetting;
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class OauthSettingSeeder extends Seeder
|
class OauthSettingSeeder extends Seeder
|
||||||
{
|
{
|
||||||
@@ -12,62 +13,53 @@ class OauthSettingSeeder extends Seeder
|
|||||||
*/
|
*/
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
$providers = collect([
|
try {
|
||||||
'azure',
|
$providers = collect([
|
||||||
'bitbucket',
|
'azure',
|
||||||
'github',
|
'bitbucket',
|
||||||
'gitlab',
|
'github',
|
||||||
'google',
|
'gitlab',
|
||||||
'authentik',
|
'google',
|
||||||
]);
|
'authentik',
|
||||||
|
]);
|
||||||
|
|
||||||
$isOauthSeeded = OauthSetting::count() > 0;
|
$isOauthSeeded = OauthSetting::count() > 0;
|
||||||
|
|
||||||
// We changed how providers are defined in the database, so we authentik does not exists, we need to recreate all of the auth providers
|
// We changed how providers are defined in the database, so we authentik does not exists, we need to recreate all of the auth providers
|
||||||
// Before authentik was a provider, providers started with 0 id
|
// Before authentik was a provider, providers started with 0 id
|
||||||
|
|
||||||
$isOauthAuthentik = OauthSetting::where('provider', 'authentik')->exists();
|
$isOauthAuthentik = OauthSetting::where('provider', 'authentik')->exists();
|
||||||
if ($isOauthSeeded) {
|
if (! $isOauthSeeded || $isOauthAuthentik) {
|
||||||
if (! $isOauthAuthentik) {
|
|
||||||
$allProviders = OauthSetting::all();
|
|
||||||
$notFoundProviders = $providers->diff($allProviders->pluck('provider'));
|
|
||||||
|
|
||||||
$allProviders->each(function ($provider) {
|
|
||||||
$provider->delete();
|
|
||||||
});
|
|
||||||
$allProviders->each(function ($provider) use ($providers) {
|
|
||||||
$providerName = $provider->provider;
|
|
||||||
|
|
||||||
$foundProvider = $providers->first(function ($provider) use ($providerName) {
|
|
||||||
return $provider === $providerName;
|
|
||||||
});
|
|
||||||
|
|
||||||
if ($foundProvider) {
|
|
||||||
$newProvder = new OauthSetting;
|
|
||||||
$newProvder = $provider;
|
|
||||||
unset($newProvder->id);
|
|
||||||
$newProvder->save();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
foreach ($notFoundProviders as $provider) {
|
|
||||||
OauthSetting::create([
|
|
||||||
'provider' => $provider,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
foreach ($providers as $provider) {
|
foreach ($providers as $provider) {
|
||||||
OauthSetting::updateOrCreate([
|
OauthSetting::updateOrCreate([
|
||||||
'provider' => $provider,
|
'provider' => $provider,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
foreach ($providers as $provider) {
|
$allProviders = OauthSetting::all();
|
||||||
OauthSetting::updateOrCreate([
|
$notFoundProviders = $providers->diff($allProviders->pluck('provider'));
|
||||||
|
|
||||||
|
$allProviders->each(function ($provider) {
|
||||||
|
$provider->delete();
|
||||||
|
});
|
||||||
|
$allProviders->each(function ($provider) {
|
||||||
|
$provider = new OauthSetting;
|
||||||
|
$provider->provider = $provider->provider;
|
||||||
|
unset($provider->id);
|
||||||
|
$provider->save();
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach ($notFoundProviders as $provider) {
|
||||||
|
OauthSetting::create([
|
||||||
'provider' => $provider,
|
'provider' => $provider,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Log::error($e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user