Skip to content

bramalho/laravel-user-permissions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Laravel User Permissions Package

Latest Stable Version Total Downloads License

Laravel User Permissions is a Laravel package that provide a really simple user roles and permissions management.

Installation

Install the package

composer require bramalho/laravel-user-permissions

Add the service provider in config/app.php

BRamalho\LaravelUserPermissions\LaravelUserPermissionsServiceProvider::class,

Publish the configs

php artisan vendor:publish --provider 'BRamalho\LaravelUserPermissions\LaravelUserPermissionsServiceProvider'

Add the Permission trait to your User model

<?php

namespace App;

use BRamalho\LaravelUserPermissions\Traits\Permission;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable, Permission;

    //...
}

Register the Middleware in app\Http\Kernel.php

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;
use BRamalho\LaravelUserPermissions\Http\Middleware\UserHasRole;
use BRamalho\LaravelUserPermissions\Http\Middleware\UserHasPermission;

class Kernel extends HttpKernel
{
    // ...

    protected $routeMiddleware = [
        // ...
        'role' => UserHasRole::class,
        'permission' => UserHasPermission::class
    ];
}

Run migrations

php artisan migrate

Usage

You can assign or remove roles simply like this

<?php

use Illuminate\Database\Seeder;
use App\User;
use BRamalho\LaravelUserPermissions\Models\UserRole;
use BRamalho\LaravelUserPermissions\Models\UserPermission;

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        User::create([
            'id' => 1,
            'name' => 'Admin',
            'email' => 'admin@app.local',
            'password' => bcrypt('admin')
        ]);
        User::create([
            'id' => 2,
            'name' => 'Publisher',
            'email' => 'publisher@app.local',
            'password' => bcrypt('publisher')
        ]);

        UserRole::create(
            [
                'id'    => 1,
                'name'  => 'Admin'
            ]
        );
        UserRole::create(
            [
                'id'    => 2,
                'name'  => 'Publisher'
            ]
        );

        UserPermission::create(
            [
                'id'            => 1,
                'user_role_id'  => 2,
                'module'        => 'pages',
                'action'        => 'view'
            ]
        );
        UserPermission::create(
            [
                'id'            => 2,
                'user_role_id'  => 2,
                'module'        => 'pages',
                'action'        => 'add'
            ]
        );
        UserPermission::create(
            [
                'id'            => 3,
                'user_role_id'  => 2,
                'module'        => 'pages',
                'action'        => 'edit'
            ]
        );

        $userAdmin = User::find(1);
        $roleAdmin = UserRole::find(1);
        $userAdmin->assignRole($roleAdmin);
        //$userPublisher->removeRole($roleAdmin);

        $userPublisher = User::find(2);
        $rolePublisher = UserRole::find(2);
        $userPublisher->assignRole($rolePublisher);
        //$userPublisher->removeRole($rolePublisher);
    }
}

To use the middlware in your routes

Route::get('/page/{id}', 'PageController@index')->name('page')->middleware('permission:pages,view');
Route::get('/page/{id}/add', 'PageController@add')->name('pageAdd')->middleware('permission:pages,add');
Route::get('/page/{id}/edit', 'PageController@add')->name('pageAdd')->middleware('permission:pages,edit');
Route::delete('/page/{id}/delete', 'PageController@delete')->name('pageDelete')->middleware('permission:pages,delete');

License

The Laravel User Permissions is open-sourced software licensed under the MIT license.