62 lines
1.8 KiB
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');
|
|
}
|
|
}
|
|
}
|