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
1use Illuminate\Foundation\Auth\User as Authenticatable;
2use Grazulex\LaravelMultiPersona\Traits\HasPersonas;
3
4class User extends Authenticatable
5{
6 use HasPersonas;
7
8 // ... rest of your model
9}
10
11// Get current active persona
12$currentPersona = persona();
13
14// List all user personas
15$userPersonas = auth()->user()->personas;
16
17// Create a new persona
18$persona = auth()->user()->createPersona([
19 'name' => 'Company Admin',
20 'context' => [
21 'role' => 'admin',
22 'company_id' => 123,
23 'permissions' => ['read', 'write', 'delete']
24 ]
25]);
26
27// Switch to persona
28auth()->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 :
