PHPackages                             kduma/permissions - 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. [Database &amp; ORM](/categories/database)
4. /
5. kduma/permissions

AbandonedArchivedLibrary[Database &amp; ORM](/categories/database)

kduma/permissions
=================

Simple (really?) package to provide Roles and Permissions to Laravel 5.1

v1.1.0(10y ago)51.7kMITPHPPHP &gt;=5.4.0

Since Jan 31Pushed 9y ago1 watchersCompare

[ Source](https://github.com/kduma-OSS/LV-permissions)[ Packagist](https://packagist.org/packages/kduma/permissions)[ RSS](/packages/kduma-permissions/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)Dependencies (1)Versions (5)Used By (0)

L5-permissions
==============

[](#l5-permissions)

[![Latest Stable Version](https://camo.githubusercontent.com/8a04233c0459473268c4ba2823d596c462d88493c60931e8920f8415d5683025/68747470733a2f2f706f7365722e707567782e6f72672f6b64756d612f7065726d697373696f6e732f762f737461626c652e737667)](https://packagist.org/packages/kduma/permissions)[![Total Downloads](https://camo.githubusercontent.com/9270918f6baf20a4fefe6da03a4bd67f799e9a5a2f57ae20da31b8e1e0e549ec/68747470733a2f2f706f7365722e707567782e6f72672f6b64756d612f7065726d697373696f6e732f646f776e6c6f6164732e737667)](https://packagist.org/packages/kduma/permissions)[![Latest Unstable Version](https://camo.githubusercontent.com/75dff7fa6ee4fd671b7f6d9777e91ac3688f4cb39b595f083e6630d87bd8d905/68747470733a2f2f706f7365722e707567782e6f72672f6b64756d612f7065726d697373696f6e732f762f756e737461626c652e737667)](https://packagist.org/packages/kduma/permissions)[![License](https://camo.githubusercontent.com/353c5ca34cb01298e67d92f3e13c1c15097d7e429a42011bb3f9057d90f1c688/68747470733a2f2f706f7365722e707567782e6f72672f6b64756d612f7065726d697373696f6e732f6c6963656e73652e737667)](https://packagist.org/packages/kduma/permissions)[![SensioLabsInsight](https://camo.githubusercontent.com/c65c18f8f168877003e274e4786b73889d47ee9234d71eee09dc4edc3c5db623/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f35626162653538302d613361332d343163662d613162362d3363323636663239656639322f6d696e692e706e67)](https://insight.sensiolabs.com/projects/5babe580-a3a3-41cf-a1b6-3c266f29ef92)[![StyleCI](https://camo.githubusercontent.com/b36827a0027a3c842f356a0d32990d568a1ce0fcb60de4b0ad68054c1dff0993/68747470733a2f2f7374796c6563692e696f2f7265706f732f33303130333037362f736869656c643f6272616e63683d6d6173746572)](https://styleci.io/repos/30103076)

Simple (really?) package to provide Roles and Permissions to Laravel 5.1

Setup
=====

[](#setup)

Add the package to the require section of your composer.json and run `composer update`

```
"kduma/permissions": "^1.1"

```

Then add the Service Provider to the providers array in `config/app.php`:

```
KDuma\Permissions\PermissionsServiceProvider::class,

```

Then add the Facades to the aliases array in `config/app.php`:

```
'Permissions'        => KDuma\Permissions\Facades\Permissions::class,
'PermissionsManager' => KDuma\Permissions\Facades\PermissionsManager::class,

```

Then add the Middleware's to the `routeMiddleware` array in `app/Http/Kernel.php`:

```
'permission' => \KDuma\Permissions\Middleware\Permission::class,
'role' => \KDuma\Permissions\Middleware\Role::class,

```

in your `User` model (`app/User.php`) add following line:

```
use \KDuma\Permissions\Permissions;

```

Run the following command to copy migrations:

```
php artisan vendor:publish --provider="KDuma\Permissions\PermissionsServiceProvider" --tag="migrations"

```

In `SampleMigrations` folder are examples you can use or make new based on.

- In `2015_01_01_000005_create_and_assign_roles_and_permissions.php` migration file are sample Roles and Permissions
- In `2015_01_01_000006_create_administrator_account.php` migration file is created administrator account

Usage
=====

[](#usage)

Protecting controllers and routes
---------------------------------

[](#protecting-controllers-and-routes)

You can use two Middleware's: `permission` and `role`

```
Route::get('admin/profile', [
    'middleware' => 'role:editor',
    'uses' => 'UserController@showProfile'
]);
```

or

```
class UserController extends Controller
{
    public function __construct()
    {
        $this->middleware('permission:user.edit:user.panel');
    }
}
```

You can provide more than one role/permission in one call by separating them using `:`. For example: `permission:perm1:perm2:perm3`. Middleware refuses access if user hasn't any of provided permissions/roles.

Checking permissions in views
-----------------------------

[](#checking-permissions-in-views)

You can use `Permissions` facade:

```
Permissions::can('permission');
```

or

```
Permissions::is('role');
```

Creating/deleting roles and permissions
---------------------------------------

[](#creatingdeleting-roles-and-permissions)

To manage roles and permissions you can use `PermissionsManager` Facaade.
The easiest way to manage permissions is putting them in migrations files.

`PermissionsManager` Facaade has bunch of usefull methods:

- Roles
    - `PermissionsManager::createRole('ROLE_STRING_ID', 'ROLE_DESCRIPTION');`
    - `PermissionsManager::deleteRole('ROLE_STRING_ID');`
- Permission
    - `PermissionsManager::createPermission('PERMISSION_STRING_ID', 'PERMISSION_DESCRIPTION');`
    - `PermissionsManager::deletePermission('PERMISSION_STRING_ID');`
- Attaching and Detaching roles and permissions
    - `PermissionsManager::attach('ROLES_LIST', 'PERMISSIONS_LIST');`
    - `PermissionsManager::detach('ROLES_LIST', 'PERMISSIONS_LIST');`

Admin role
----------

[](#admin-role)

As default `admin` role is setted to be root role. Root role always has all permissions. You can change it in configuration file.

Extending
=========

[](#extending)

Models
------

[](#models)

You are free to extend `Permission` and `Role` models.
If you extend, set model path in configuration (in `ConfigServiceProvider`):

```
config([ 'permissions.models.Role' => '\App\Role' ]);
```

Sample extended model:

```
namespace App;

use KDuma\Permissions\Models\Role as BaseRole;

class Role extends BaseRole
{
    public function members()
    {
        return $this->hasMany('\App\Member');
    }
}
```

Roles and Permissions from associated models
--------------------------------------------

[](#roles-and-permissions-from-associated-models)

For example if your user is associated to an Member object that have own role, you can import them by placing this sample method in your `User` model:

```
protected function fetchAddionalPermissions($roles_list, $permissions_list)
{
    $this->load('member.role.permissions');
    if(!is_null($this->member) && !is_null($this->member->role)){
        $role = $this->member->role;
        $roles_list[$role->str_id] = $role;
        foreach ($role->permissions as $permission) {
            $permissions_list[$permission->str_id] = $permission;
        }
    }
    return [$roles_list, $permissions_list];
}
```

Packagist
=========

[](#packagist)

View this package on Packagist.org: [kduma/permissions](https://packagist.org/packages/kduma/permissions)

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity20

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~43 days

Total

4

Last Release

3995d ago

Major Versions

v0.1.2 → v1.1.02015-06-09

### Community

Maintainers

![](https://www.gravatar.com/avatar/d09451622719c7efce1a7971b8e5a875859504882ba2b8c279d1015a99e8f12c?d=identicon)[kduma](/maintainers/kduma)

---

Top Contributors

[![kduma](https://avatars.githubusercontent.com/u/1062582?v=4)](https://github.com/kduma "kduma (42 commits)")

---

Tags

laravelphplaraveleloquentpermissionroles

### Embed Badge

![Health badge](/badges/kduma-permissions/health.svg)

```
[![Health](https://phpackages.com/badges/kduma-permissions/health.svg)](https://phpackages.com/packages/kduma-permissions)
```

###  Alternatives

[silber/bouncer

Eloquent roles and abilities.

3.6k4.4M25](/packages/silber-bouncer)[tucker-eric/eloquentfilter

An Eloquent way to filter Eloquent Models

1.8k4.8M26](/packages/tucker-eric-eloquentfilter)[watson/validating

Eloquent model validating trait.

9723.3M47](/packages/watson-validating)[kodeine/laravel-acl

Light-weight role-based permissions for Laravel 5 built in Auth system.

782354.8k5](/packages/kodeine-laravel-acl)[cybercog/laravel-love

Make Laravel Eloquent models reactable with any type of emotions in a minutes!

1.2k302.7k1](/packages/cybercog-laravel-love)[cviebrock/eloquent-taggable

Easy ability to tag your Eloquent models in Laravel.

567694.8k3](/packages/cviebrock-eloquent-taggable)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
