feat: implement multi-tenancy and super admin impersonation with security banner
This commit is contained in:
40
app/Console/Commands/MakeSuperAdmin.php
Normal file
40
app/Console/Commands/MakeSuperAdmin.php
Normal 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.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user