mirror of
https://github.com/coollabsio/coolify.git
synced 2026-08-24 10:05:47 -05:00
fix: wrap seeders in db transactions (#11360)
This commit is contained in:
@@ -4,6 +4,7 @@ namespace Database\Seeders;
|
||||
|
||||
use App\Models\OauthSetting;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class OauthSettingSeeder extends Seeder
|
||||
@@ -43,25 +44,27 @@ class OauthSettingSeeder extends Seeder
|
||||
return;
|
||||
}
|
||||
|
||||
$allProviders = OauthSetting::all();
|
||||
$notFoundProviders = $providers->diff($allProviders->pluck('provider'));
|
||||
DB::transaction(function () use ($providers) {
|
||||
$allProviders = OauthSetting::all();
|
||||
$notFoundProviders = $providers->diff($allProviders->pluck('provider'));
|
||||
|
||||
$allProviders->each(function ($provider) {
|
||||
$provider->delete();
|
||||
});
|
||||
$allProviders->each(function ($provider) {
|
||||
$newProvider = $provider->replicate();
|
||||
$newProvider->save();
|
||||
});
|
||||
$allProviders->each(function ($provider) {
|
||||
$provider->delete();
|
||||
});
|
||||
$allProviders->each(function ($provider) {
|
||||
$newProvider = $provider->replicate();
|
||||
$newProvider->save();
|
||||
});
|
||||
|
||||
foreach ($notFoundProviders as $provider) {
|
||||
OauthSetting::create([
|
||||
'provider' => $provider,
|
||||
]);
|
||||
}
|
||||
foreach ($notFoundProviders as $provider) {
|
||||
OauthSetting::create([
|
||||
'provider' => $provider,
|
||||
]);
|
||||
}
|
||||
});
|
||||
|
||||
} catch (\Exception $e) {
|
||||
Log::error($e->getMessage());
|
||||
Log::error('OauthSettingSeeder failed: '.$e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ use App\Models\PersonalAccessToken;
|
||||
use App\Models\Team;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class PersonalAccessTokenSeeder extends Seeder
|
||||
{
|
||||
@@ -74,33 +74,35 @@ class PersonalAccessTokenSeeder extends Seeder
|
||||
],
|
||||
];
|
||||
|
||||
// First, remove all existing development tokens for this user
|
||||
$deletedCount = PersonalAccessToken::where('tokenable_id', $user->id)
|
||||
->where('tokenable_type', get_class($user))
|
||||
->whereIn('name', array_column($testTokens, 'name'))
|
||||
->delete();
|
||||
DB::transaction(function () use ($user, $team, $testTokens) {
|
||||
// First, remove all existing development tokens for this user
|
||||
$deletedCount = PersonalAccessToken::where('tokenable_id', $user->id)
|
||||
->where('tokenable_type', get_class($user))
|
||||
->whereIn('name', array_column($testTokens, 'name'))
|
||||
->delete();
|
||||
|
||||
if ($deletedCount > 0) {
|
||||
$this->command->info("Removed {$deletedCount} existing development token(s).");
|
||||
}
|
||||
if ($deletedCount > 0) {
|
||||
$this->command->info("Removed {$deletedCount} existing development token(s).");
|
||||
}
|
||||
|
||||
// Now create fresh tokens
|
||||
foreach ($testTokens as $tokenData) {
|
||||
// Create the token with a simple format: Bearer {scope}
|
||||
// The token format in the database is the hash of the plain text token
|
||||
$plainTextToken = $tokenData['token'];
|
||||
// Now create fresh tokens
|
||||
foreach ($testTokens as $tokenData) {
|
||||
// Create the token with a simple format: Bearer {scope}
|
||||
// The token format in the database is the hash of the plain text token
|
||||
$plainTextToken = $tokenData['token'];
|
||||
|
||||
PersonalAccessToken::create([
|
||||
'tokenable_type' => get_class($user),
|
||||
'tokenable_id' => $user->id,
|
||||
'name' => $tokenData['name'],
|
||||
'token' => hash('sha256', $plainTextToken),
|
||||
'abilities' => $tokenData['abilities'],
|
||||
'team_id' => $team->id,
|
||||
]);
|
||||
PersonalAccessToken::create([
|
||||
'tokenable_type' => get_class($user),
|
||||
'tokenable_id' => $user->id,
|
||||
'name' => $tokenData['name'],
|
||||
'token' => hash('sha256', $plainTextToken),
|
||||
'abilities' => $tokenData['abilities'],
|
||||
'team_id' => $team->id,
|
||||
]);
|
||||
|
||||
$this->command->info("Created token '{$tokenData['name']}' with Bearer token: {$plainTextToken}");
|
||||
}
|
||||
$this->command->info("Created token '{$tokenData['name']}' with Bearer token: {$plainTextToken}");
|
||||
}
|
||||
});
|
||||
|
||||
$this->command->info('');
|
||||
$this->command->info('Test API tokens created successfully!');
|
||||
|
||||
Reference in New Issue
Block a user