| Install | |
|---|---|
composer require grazulex/laravel-multipersona |
|
| Latest Version: | v1.0.0 |
| PHP: | ^8.3 |
Laravel MultiPersona is a lightweight context-layer system for Laravel users.
Laravel MultiPersona is a lightweight context-layer system for Laravel users.
It allows a single user to switch between different roles, accounts, or tenants dynamically, without creating multiple logins or sessions.
composer require grazulex/laravel-multipersona
// 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);
HasPersonas for your User modelEnsureActivePersona, SetPersonaFromRequestpersona(), personas($user)PersonaManager for programmatic accessPersonaInterface for custom implementations// 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']
]
]);
// Protect routes requiring specific roles
Route::middleware(['auth', 'persona.required', 'role:admin'])->group(function () {
Route::get('/admin/dashboard', [AdminController::class, 'dashboard']);
});
<!-- Vue.js component -->
<PersonaSelector
:current-persona="currentPersona"
:available-personas="availablePersonas"
@persona-changed="handlePersonaChange"
/>
The package includes comprehensive test coverage:
composer test
Current test metrics:
We welcome contributions! See our Contributing Guide for details.
git clone https://github.com/grazulex/laravel-multipersona.git
cd laravel-multipersona
composer install
composer test
If you discover any security vulnerabilities, please review our Security Policy.
Laravel MultiPersona is open-sourced software licensed under the MIT license.
Made with ❤️ for the Laravel community