PHPackages                             savannabits/entrust - 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. savannabits/entrust

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

savannabits/entrust
===================

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

v9.0.0(1y ago)272MITPHPPHP &gt;=7.2.0

Since Feb 7Pushed 1y agoCompare

[ Source](https://github.com/savannabits/entrust)[ Packagist](https://packagist.org/packages/savannabits/entrust)[ RSS](/packages/savannabits-entrust/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (5)Dependencies (7)Versions (41)Used By (0)

ENTRUST (Laravel &gt;=6 Package)
================================

[](#entrust-laravel-6-package)

[![Build Status](https://camo.githubusercontent.com/ffce7d6dca4a892bdb885a3df10f697f26bb12260b20f27841dec89991645692/68747470733a2f2f7472617669732d63692e6f72672f536176616e6e61626974732f656e74727573742e737667)](https://travis-ci.org/Savannabits/entrust)[![Version](https://camo.githubusercontent.com/5de2e59b5f66fa3995912e42c1fd7e377bf7c22daed3b856947102289a54d0f1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f536176616e6e61626974732f656e74727573742e737667)](https://packagist.org/packages/savannabits/entrust)[![License](https://camo.githubusercontent.com/475aaa3be3140ae17a130b089c7aca1fc3f7553e38672ea6db3d5ad8dfd4cecc/68747470733a2f2f706f7365722e707567782e6f72672f736176616e6e61626974732f656e74727573742f6c6963656e73652e737667)](https://packagist.org/packages/savannabits/entrust)[![Total Downloads](https://camo.githubusercontent.com/b8489bc5dd476eb9fa9e8327427e02c1afa81001409b636c4aedab4e769d06be/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f736176616e6e61626974732f656e74727573742e737667)](https://packagist.org/packages/savannabits/entrust)

[![SensioLabsInsight](https://camo.githubusercontent.com/0b1aa6bf92e58c3ebf1d5d2737f62dbbdc9b0f1f39190beb44d508e54933a386/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f63633461663936362d383039622d346662632d623862322d6262323835306536373131652f736d616c6c2e706e67)](https://insight.sensiolabs.com/projects/cc4af966-809b-4fbc-b8b2-bb2850e6711e)

Entrust is a succinct and flexible way to add Role-based Permissions to **Laravel 6,7 and 8**.

If you are looking for the Laravel 4 version, take a look [Branch 1.0](https://github.com/Savannabits/entrust/tree/1.0). It contains the latest entrust version for Laravel 4.

If you are looking for the Laravel 5 version, take a look [Tag 1.7.0](https://github.com/Savannabits/entrust/tree/1.7.0). It contains the latest entrust version for Laravel 5.

Contents
--------

[](#contents)

- [Installation](#installation)
- [Configuration](#configuration)
    - [User relation to roles](#user-relation-to-roles)
    - [Models](#models)
        - [Role](#role)
        - [Permission](#permission)
        - [User](#user)
        - [Soft Deleting](#soft-deleting)
- [Usage](#usage)
    - [Concepts](#concepts)
        - [Checking for Roles &amp; Permissions](#checking-for-roles--permissions)
        - [User ability](#user-ability)
    - [Blade templates](#blade-templates)
    - [Middleware](#middleware)
    - [Short syntax route filter](#short-syntax-route-filter)
    - [Route filter](#route-filter)
- [Troubleshooting](#troubleshooting)
- [License](#license)
- [Contribution guidelines](#contribution-guidelines)
- [Additional information](#additional-information)

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

[](#installation)

1. In order to install Laravel 6 Entrust, just add the following to your composer.json. Then run `composer update`:

```
"savannabits/entrust": "6.0.1"
```

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

```
Savannabits\Entrust\EntrustServiceProvider::class,
```

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

```
'Entrust'   => Savannabits\Entrust\EntrustFacade::class,
```

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

```
php artisan vendor:publish
```

5. Open your `config/auth.php` and add the following to it:

```
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => Namespace\Of\Your\User\Model\User::class,
        'table' => 'users',
    ],
],
```

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

```
    'role' => \Savannabits\Entrust\Middleware\EntrustRole::class,
    'permission' => \Savannabits\Entrust\Middleware\EntrustPermission::class,
    'ability' => \Savannabits\Entrust\Middleware\EntrustAbility::class,
```

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

Configuration
-------------

[](#configuration)

Set the property values in the `config/auth.php`. These values will be used by entrust to refer to the correct user table and model.

To further customize table names and model namespaces, edit the `config/entrust.php`.

### User relation to roles

[](#user-relation-to-roles)

Now generate the Entrust migration:

```
php artisan entrust:migration
```

It will generate the `_entrust_setup_tables.php` migration. You may now run it with the artisan migrate command:

```
php artisan migrate
```

After the migration, four new tables will be present:

- `roles` — stores role records
- `permissions` — stores permission records
- `role_user` — stores [many-to-many](http://laravel.com/docs/4.2/eloquent#many-to-many) relations between roles and users
- `permission_role` — stores [many-to-many](http://laravel.com/docs/4.2/eloquent#many-to-many) relations between roles and permissions

### Models

[](#models)

#### Role

[](#role)

Create a Role model inside `app/Role.php` using the following example:

```
