mitul456 / laravel-multi-role-auth
A comprehensive multi-role authentication system for Laravel
Package info
github.com/mitul456/laravel-multi-role-auth
pkg:composer/mitul456/laravel-multi-role-auth
v1.0.0
2026-04-17 03:50 UTC
Requires
- php: ^8.1
- laravel/framework: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
README
A powerful, flexible, and production-ready multi-role authentication system for Laravel applications.
๐ Table of Contents
- Features
- Requirements
- Quick Start
- Installation
- Configuration
- Usage Guide
- Dynamic Role Management
- Artisan Commands
- Helper Functions
- Testing
- Troubleshooting
- Security
- License
โจ Features
- ๐ญ Unlimited Roles
- ๐ Role Hierarchy (priority-based)
- ๐ Permission-based access control
- ๐ก๏ธ Multi-Guard Support (web, api)
- ๐ฏ Smart role-based redirects
- ๐ Middleware protection (
role:admin) - ๐จ Blade directives (
@role,@hasrole) - ๐ฑ API ready
- ๐๏ธ Admin panel support
- โจ๏ธ Artisan commands
๐ฆ Requirements
- PHP >= 8.1
- Laravel 10.x / 11.x / 12.x
- Composer (latest)
- Supported DB: MySQL, PostgreSQL, SQLite, SQL Server
๐ Quick Start
composer require mitul456/laravel-multi-role-auth php artisan multirole:install php artisan migrate
Add trait to User model:
use LaravelMultiRoleAuth\Traits\HasRoles; class User extends Authenticatable { use HasRoles; }
โ๏ธ Installation (Detailed)
composer require mitul456/laravel-multi-role-auth php artisan multirole:install
(Optional)
php artisan vendor:publish --tag=multirole-config
โ๏ธ Configuration
config/multirole.php
return [ 'default_role' => 'User', 'role_hierarchy' => [ 'SuperAdmin', 'Admin', 'Moderator', 'Editor', 'User', ], 'redirect_paths' => [ 'SuperAdmin' => '/superadmin/dashboard', 'Admin' => '/admin/dashboard', 'default' => '/dashboard', ], ];
๐ Usage Guide
Assign Role
$user->assignRole('Admin'); $user->syncRoles(['Editor', 'Moderator']);
Check Role
$user->hasRole('Admin'); $user->hasRole(['Admin', 'SuperAdmin']);
Middleware
Route::middleware(['auth', 'role:Admin'])->group(function () { // });
Blade
@role('admin') <p>Admin only</p> @endrole
Permission
$user->can('edit-articles');
๐ฏ Dynamic Role Management
Role::create(['name' => 'Manager']); $user->assignRole('Manager'); if ($user->hasRole('Manager')) { // }
โจ๏ธ Artisan Commands
php artisan multirole:install php artisan role:create "Manager" php artisan role:assign 1 "Admin" php artisan role:sync 1 "Editor" "Moderator"
๐ง Helper Functions
hasRole($user, 'Admin'); currentUserRole(); canPerform('manage-users');
๐งช Testing
php artisan test
๐ง Troubleshooting
php artisan optimize:clear composer dump-autoload
๐ Security Tips
- Always use middleware
- Avoid client-side role checks
- Use permissions for sensitive actions
๐ License
MIT License
Made with โค๏ธ by Mitul