fix: oauth seeder
This commit is contained in:
@@ -12,19 +12,56 @@ class OauthSettingSeeder extends Seeder
|
|||||||
*/
|
*/
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
$providers = [
|
$providers = collect([
|
||||||
'azure',
|
'azure',
|
||||||
'bitbucket',
|
'bitbucket',
|
||||||
'github',
|
'github',
|
||||||
'gitlab',
|
'gitlab',
|
||||||
'google',
|
'google',
|
||||||
'authentik',
|
'authentik',
|
||||||
];
|
]);
|
||||||
|
|
||||||
|
$isOauthSeeded = OauthSetting::count() > 0;
|
||||||
|
$isOauthWithZeroId = OauthSetting::where('id', 0)->exists();
|
||||||
|
if ($isOauthSeeded) {
|
||||||
|
if ($isOauthWithZeroId) {
|
||||||
|
$allProviders = OauthSetting::all();
|
||||||
|
$notFoundProviders = $providers->diff($allProviders->pluck('provider'));
|
||||||
|
|
||||||
|
$allProviders->each(function ($provider) use ($providers) {
|
||||||
|
$provider->delete();
|
||||||
|
$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,
|
||||||
);
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
foreach ($providers as $provider) {
|
||||||
|
OauthSetting::create([
|
||||||
|
'provider' => $provider,
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user