Passer d’un persona à l’autre dans Laravel avec le package MultiPersona

Le package Laravel MultiPersona est « un système de couche contextuelle léger pour les utilisateurs de Laravel. Il permet à un seul utilisateur de basculer dynamiquement entre différents rôles, comptes ou locataires, sans créer plusieurs connexions ou sessions.

Passer d’un persona à l’autre dans Laravel avec le package MultiPersona

Le package Laravel MultiPersona est « un système de couche contextuelle léger pour les utilisateurs de Laravel. Il permet à un seul utilisateur de basculer dynamiquement entre différents rôles, comptes ou locataires, sans créer plusieurs connexions ou sessions.

Ce package est conçu en fournissant un modèle qui est attaché à un seul utilisateur. Un service de persona fourni par un package gère des opérations telles que l’obtention du persona actuel, le basculement entre eux, la vérification des autorisations, etc.Persona

use Illuminate\Foundation\Auth\User as Authenticatable;
use Grazulex\LaravelMultiPersona\Traits\HasPersonas;
 
class User extends Authenticatable
{
    use HasPersonas;
 
    // ... rest of your model
}
 
// Get current active persona
$currentPersona = persona();
 
// List all user personas
$userPersonas = auth()->user()->personas;
 
// Create a new persona
$persona = auth()->user()->createPersona([
    'name' => 'Company Admin',
    'context' => [
        'role' => 'admin',
        'company_id' => 123,
        'permissions' => ['read', 'write', 'delete']
    ]
]);
 
// Switch to persona
auth()->user()->switchToPersona($persona);

Ce package peut être utile pour les applications SaaS multilocataires où les utilisateurs peuvent basculer entre différents contextes d’entreprise, un accès basé sur les rôles, etc. L’extrait suivant est un exemple du fichier readme du package, qui illustre la création de personas pour plusieurs contextes d’entreprise :

// User switches between companies
$companyA = $user->createPersona([
    'name' => 'Acme Corp Admin',
    'context' => [
        'company_id' => 1,
        'role' => 'admin',
        'permissions' => ['manage_users', 'view_reports']
    ]
]);
 
$companyB = $user->createPersona([
    'name' => 'TechStart User',
    'context' => [
        'company_id' => 2,
        'role' => 'user',
        'permissions' => ['view_dashboard']
    ]
]);

Cas d’utilisation des packages

  • SaaS multi-tenant : les utilisateurs passent d’un contexte d’entreprise à un autre
  • Accès basé sur les rôles : même utilisateur, autorisations différentes par contexte
  • Gestion d’agence : Gérez plusieurs comptes clients
  • Plateformes de marché : Changement de contexte acheteur/vendeur
  • Systèmes d’entreprise : accès par service ou par projet

📖 Vous pouvez commencer à utiliser ce package en suivant le guide d’installation.

💻 Le code source est disponible sur GitHub à l’adresse Grazulex/laravel-multipersona.

Steven KOULO
Steven KOULODéveloppeur Fullstack

Besoin d'un développeur pour votre prochain projet ? Je suis disponible pour des missions freelance.

Me contacter