Skip to content

njbm/role-permission

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔐 Laravel Role-Permission Package (One Role Per User)

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

About

A simple, robust role-permission package for Laravel (one role per user)

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages