feat: implement multi-tenancy and super admin impersonation with security banner

This commit is contained in:
jeremy bayse
2026-02-21 20:15:47 +01:00
parent a0e904d69d
commit 63e448ef22
31 changed files with 819 additions and 51 deletions

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Console\Commands;
use App\Models\User;
use App\Models\Role;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class MakeSuperAdmin extends Command
{
protected $signature = 'make:superadmin {email}';
protected $description = 'Promote a user to SuperAdmin';
public function handle()
{
$email = $this->argument('email');
$user = User::withoutGlobalScope('structure')->where('email', $email)->first();
if (!$user) {
$this->error("Utilisateur non trouvé.");
return;
}
// S'assurer que le rôle SuperAdmin existe (globalement)
$role = Role::withoutGlobalScope('structure')->firstOrCreate(
['name' => 'SuperAdmin', 'guard_name' => 'web'],
['structure_id' => null] // Rôle global
);
// Assigner le rôle sur le contexte de l'utilisateur (ou structure 1 par défaut pour le CABM)
setPermissionsTeamId($user->structure_id ?? 1);
if (!$user->hasRole('SuperAdmin')) {
$user->assignRole($role);
}
$this->info("Félicitations ! L'utilisateur {$email} a été promu SuperAdmin.");
}
}