njbm / role-permission
A simple, robust role-permission package for Laravel (one role per user).
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/njbm/role-permission
README
A simple, robust, and easy-to-manage Laravel role-permission system (one role per user) — no external dependencies like Spatie.
Built and maintained by Jaber Masud
📦 Installation
Option 1: Install from GitHub (Packagist style)
composer require njbm/role-permission
Update
composer update njbm/role-permission
Specific Virsion
composer require njbm/role-permission:^1.0.1
Remove package
composer remove njbm/role-permission
⚙️ Configuration
Step 1: Add service provider and alias (optional for Laravel < 5.5)
// config/app.php 'providers' => [ RolePermission\RolePermissionServiceProvider::class, ], 'aliases' => [ 'AccessControl' => RolePermission\Facades\AccessControl::class, ],
Step 2: Publish the config file
php artisan vendor:publish --provider="RolePermission\RolePermissionServiceProvider" --tag=config
🛠 Database Setup
Step 1: Migrate Tables
php artisan migrate
Step 2: Seed Default Roles and Permissions
php artisan db:seed --class="RolePermission\Seeders\RolePermissionSeeder"
🔐 Seeder uses config('role-permission.default_roles') to assign permissions to each role.
🧠 Model Setup
Add trait to your Admin or User model (must have role_id column):
use RolePermission\Traits\HasPermissions; class Admin extends Authenticatable { use HasPermissions; }
✅ Usage
Use the AccessControl facade anywhere to check permissions or roles:
use AccessControl; if (AccessControl::can('edit address')) { // Authorized } if (AccessControl::role('admin')) { // Admin only }
🛡 Middleware setup
Add middleware to app/Http/Kernel.php:
'check.permission' => \RolePermission\Middleware\CheckPermission::class,
Use middleware on routes:
'check.permission' => \RolePermission\Middleware\CheckPermission::class,
🧩 Blade directive (optional)
Register in AppServiceProvider:
Blade::if('canDo', function ($permission) { return \AccessControl::can($permission); });
Use in Blade templates:
@canDo('delete address') <button>Delete</button> @endcanDo
⚙ Example config/role-permission.php
return [ 'default_roles' => [ 'admin' => [ 'edit address', 'delete address', 'view dashboard', ], 'editor' => [ 'edit address', ], ], ];
📜 Summary
Install package via composer
Publish config and migrate database tables
Seed default roles and permissions
Add trait to your User/Admin model
Use AccessControl facade for permission checks
Protect routes with middleware
Use optional Blade directive for cleaner views
📄 License
MIT License — created by Jaber Masud
jaber.netlify.app