53 lines
1.7 KiB
PHP
53 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\AppSetting;
|
|
use App\Models\User;
|
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use RuntimeException;
|
|
|
|
class DatabaseSeeder extends Seeder
|
|
{
|
|
use WithoutModelEvents;
|
|
|
|
/**
|
|
* Seed the application's database.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$email = (string) env('RELAIS_SMS_ADMIN_EMAIL', 'admin@relais-sms.test');
|
|
$password = (string) env('RELAIS_SMS_ADMIN_PASSWORD', 'relais-sms');
|
|
|
|
if (! app()->environment(['local', 'testing'])
|
|
&& ! User::query()->where('email', $email)->exists()
|
|
&& (trim($password) === '' || $password === 'relais-sms')) {
|
|
throw new RuntimeException('Definissez un mot de passe administrateur personnel dans RELAIS_SMS_ADMIN_PASSWORD avant de creer le compte hors developpement.');
|
|
}
|
|
|
|
$settings = collect(config('relais_sms.default_settings'))
|
|
->map(fn (mixed $value, string $key): array => [
|
|
'key' => $key,
|
|
'value' => is_bool($value) ? (string) (int) $value : (string) $value,
|
|
'type' => match (true) {
|
|
is_bool($value) => 'boolean',
|
|
is_int($value) => 'integer',
|
|
default => 'string',
|
|
},
|
|
])
|
|
->values()
|
|
->all();
|
|
|
|
AppSetting::upsert($settings, ['key'], ['value', 'type']);
|
|
|
|
User::query()->firstOrCreate([
|
|
'email' => $email,
|
|
], [
|
|
'name' => env('RELAIS_SMS_ADMIN_NAME', 'Administrateur RelaisSMS'),
|
|
'password' => Hash::make($password),
|
|
]);
|
|
}
|
|
}
|