feat: introduce multi-tenancy by adding a structures table, structure_id to key models, and updating seeders for structure management.

This commit is contained in:
jeremy bayse
2026-02-21 20:38:40 +01:00
parent 6a3de5847d
commit abca346b3e
7 changed files with 122 additions and 40 deletions

View File

@@ -13,18 +13,49 @@ class DatabaseSeeder extends Seeder
*/
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,
]);
$admin = User::factory()->create([
'name' => 'Admin User',
'email' => 'admin@admin.com',
'password' => bcrypt('password'),
]);
// 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,
]
);
$admin->assignRole('Admin');
// 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');
}
}
}