Files
ficheagent/database/seeders/DatabaseSeeder.php

62 lines
1.8 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\User;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
// 1. Initialiser la structure par défaut (CABM)
$cabm = \App\Models\Structure::firstOrCreate([
'slug' => 'cabm'
], [
'name' => 'CABM',
'is_active' => true,
]);
// 2. Définir le contexte global pour les seeders suivants
config(['tenant.structure_id' => $cabm->id]);
app()[\Spatie\Permission\PermissionRegistrar::class]->setPermissionsTeamId($cabm->id);
// 3. Appeler les seeders de base (ils utiliseront le contexte CABM)
$this->call([
ServiceSeeder::class,
RolesAndPermissionsSeeder::class,
IntegrationTemplateSeeder::class,
]);
// 4. Créer le compte Admin lié à cette structure
$admin = User::withoutGlobalScope('structure')->updateOrCreate(
['email' => 'admin@admin.com'],
[
'name' => 'Admin User',
'password' => bcrypt('password'),
'structure_id' => $cabm->id,
]
);
// 5. Lui assigner le rôle Admin (dans le contexte de CABM)
if (!$admin->hasRole('Admin')) {
$admin->assignRole('Admin');
}
// 6. Créer le rôle SuperAdmin lié à CABM pour le seeder
$superAdminRole = \App\Models\Role::updateOrCreate(
['name' => 'SuperAdmin'],
['guard_name' => 'web', 'structure_id' => $cabm->id]
);
// L'admin de base sera aussi SuperAdmin
if (!$admin->hasRole('SuperAdmin')) {
$admin->assignRole('SuperAdmin');
}
}
}