PHPackages                             dangkien/roleper - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. dangkien/roleper

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

dangkien/roleper
================

This package provides a flexible way to add Role-based Permissions to Laravel

2.3.1(6y ago)097MITPHPPHP &gt;=5.5.0CI failing

Since Jun 30Pushed 6y agoCompare

[ Source](https://github.com/DangKien/role-permisson)[ Packagist](https://packagist.org/packages/dangkien/roleper)[ RSS](/packages/dangkien-roleper/feed)WikiDiscussions master Synced yesterday

READMEChangelog (10)Dependencies (7)Versions (11)Used By (0)

RolePermission
==============

[](#rolepermission)

Role-Permission Laravel Packget

Installation
------------

[](#installation)

1)Just add the following to your composer.json. Then run `composer update`:

```
composer require dangkien/roleper --no-scripts
```

2. Open your `config/app.php` and add the following to the `providers` array:

```
DangKien\RolePer\RolePerServiceProvider::class,
```

3. In the same `config/app.php` and add the following to the `aliases ` array:

```
'RolePer'   => DangKien\RolePer\RolePerFacade::class,
```

4. Run the command below to publish the package config file `config/roleper.php`:

```
php artisan vendor:publish
```

5. If you want to use [Middleware](#middleware) (requires Laravel 5.1 or later) you also need to add the following:

```
    'role' => \DangKien\RolePer\Middleware\RolePerRole::class,
    'permission' => \DangKien\RolePer\Middleware\RolePerPermission::class,
    'ability' => \DangKien\RolePer\Middleware\RolePerAbility::class,
```

to `routeMiddleware` array in `app/Http/Kernel.php`.

copy to User.php

```
    use \DangKien\RolePer\Traits\RolePerUserTrait;
```

#### Checking for Roles &amp; Permissions

[](#checking-for-roles--permissions)

Now we can check for roles and permissions simply by doing:

```
$user->hasRole('owner');   // false
$user->hasRole('admin');   // true
$user->can('edit-user');   // false
$user->can('create-post'); // true
```

Both `hasRole()` and `can()` can receive an array of roles &amp; permissions to check:

```
$user->hasRole(['owner', 'admin']);       // true
$user->can(['edit-user', 'create-post']); // true
```

By default, if any of the roles or permissions are present for a user then the method will return true. Passing `true` as a second parameter instructs the method to require **all** of the items:

```
$user->hasRole(['owner', 'admin']);             // true
$user->hasRole(['owner', 'admin'], true);       // false, user does not have admin role
$user->can(['edit-user', 'create-post']);       // true
$user->can(['edit-user', 'create-post'], true); // false, user does not have edit-user permission
```

You can have as many `Role`s as you want for each `User` and vice versa.

### Route

[](#route)

```
/// ROLE PERMISSION ROUTE
    Route::group(['prefix' => 'admin/users'], function() {
    Route::get('user-permission/{id}', '\DangKien\RolePer\Controllers\UserRoleController@index')->name('user-permission.index');
    Route::post('user-permission/{id}', '\DangKien\RolePer\Controllers\UserRoleController@store')->name('user-permission.store');
    Route::get('role-permission/{id}', '\DangKien\RolePer\Controllers\RolePermissionController@index')->name('roles-permission.index');
    Route::post('role-permission/{id}', '\DangKien\RolePer\Controllers\RolePermissionController@store')->name('roles-permission.store');
});

Route::resource('admin/roles', '\DangKien\RolePer\Controllers\RoleController');
Route::group(['prefix' => '', 'middleware' => 'role:superadmin'], function() {
    Route::resource('admin/permissions', '\DangKien\RolePer\Controllers\PermissionController');
    Route::resource('admin/permissions-group', '\DangKien\RolePer\Controllers\PermissionGroupController');
});
```

### User

[](#user)

Next, use the `RolePerUserTrait` trait in your existing `User` model. For example:

```
