PHPackages                             bdmehedi/laravel-permission - 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. bdmehedi/laravel-permission

ActivePackage

bdmehedi/laravel-permission
===========================

A laravel package to manage laravel roles and permissions

1.0.0(2y ago)2181MITPHPPHP &gt;=7.3

Since Aug 9Pushed 2y ago1 watchersCompare

[ Source](https://github.com/bdmehedi/laravel-permission)[ Packagist](https://packagist.org/packages/bdmehedi/laravel-permission)[ Docs](https://github.com/bdmehedi/laravel-permission)[ RSS](/packages/bdmehedi-laravel-permission/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (4)Used By (0)

[![Laravel Role & Permission](https://camo.githubusercontent.com/9e2c4bddbd69bf131eff2c0478a61688711d6ca8db2775cd182aa1042d6454da/68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f4c61726176656c2532305065726d697373696f6e2e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d62646d65686564692532466c61726176656c2d7065726d697373696f6e267061747465726e3d617263686974656374267374796c653d7374796c655f31266465736372697074696f6e3d412b4c61726176656c2b7061636b6167652b746f2b6d616e6167652b75736572253237732b726f6c65732b616e642b7065726d697373696f6e73266d643d312673686f7757617465726d61726b3d3126666f6e7453697a653d313030707826696d616765733d68747470732533412532462532466c61726176656c2e636f6d253246696d672532466c6f676f6d61726b2e6d696e2e737667)](https://camo.githubusercontent.com/9e2c4bddbd69bf131eff2c0478a61688711d6ca8db2775cd182aa1042d6454da/68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f4c61726176656c2532305065726d697373696f6e2e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d62646d65686564692532466c61726176656c2d7065726d697373696f6e267061747465726e3d617263686974656374267374796c653d7374796c655f31266465736372697074696f6e3d412b4c61726176656c2b7061636b6167652b746f2b6d616e6167652b75736572253237732b726f6c65732b616e642b7065726d697373696f6e73266d643d312673686f7757617465726d61726b3d3126666f6e7453697a653d313030707826696d616765733d68747470732533412532462532466c61726176656c2e636f6d253246696d672532466c6f676f6d61726b2e6d696e2e737667)

laravel-permission
==================

[](#laravel-permission)

This is a Laravel package that allows you to manage roles and permissions in any Laravel project with minimal database queries and a small number of loaded models. It is a highly optimized package

Installation, configuration, and uses instructions
--------------------------------------------------

[](#installation-configuration-and-uses-instructions)

install via **composer**

```
composer require bdmehedi/laravel-permission
```

The **service provider** will be registered automatically. If you want, you may add it manually.

```
'providers' => [
    // ...
    BdMehedi\LaravelPermission\LaravelPermissionServiceProvider::class,
];

```

**Publish** the migrations and edit as your need

```
php artisan vendor:publish --tag=laravel_permission_migration
```

**Run the migrations**. After publishing the migrations and configuring them as your need you have to create database tables by running the command bellow:

```
php artisan migrate
```

#### Add the HasPermissions traits to User model(s)

[](#add-the-haspermissions-traits-to-user-models)

```
use HasPermissions
```

### Uses

[](#uses)

**Create Role and Permission**

```
use BdMehedi\LaravelPermission\Models\Permission;
use BdMehedi\LaravelPermission\Models\Role;

$role = Role::create(['role' => 'admin']);
$permission = Permission::create(['name' => 'create-user', 'group' => 'user']);  //the group is optional
```

#### Assign roles and permissions to User

[](#assign-roles-and-permissions-to-user)

```
$user->assignRole('admin');
$user->givePermissionTo('create-user');

//or your can assign permissions by providing an array
$user->assignRole(['admin', 'user']);
$user->givePermissionTo(['create-user']);
```

#### Withdraw roles and permissions from User

[](#withdraw-roles-and-permissions-from-user)

```
// Single permission or role
$user->revokeRole('admin');
$user->withdrawPermissionTo('create-user');

// Or array of permissions or roles
$user->revokeRole(['admin']);
$user->withdrawPermissionTo(['create-user']);
```

#### Give permissions to Role

[](#give-permissions-to-role)

```
$role->givePermissionTo('create-user');

//or an array or permissions
$role->givePermissionTo(['create-user']);
```

#### Withdraw permissions from Role

[](#withdraw-permissions-from-role)

```
$role->withdrawPermissionTo('create-user');

//or array or permissions
$role->givePermissionTo(['create-user']);
```

#### Checking permissions

[](#checking-permissions)

You can check a user's permission with Laravel's default can function.

```
$user->can('create-user');
```

Or you can check with hasPermissionTo

```
$user->hasPermissionTo('create-user');
```

#### Checking roles

[](#checking-roles)

```
$user->hasRole('admin');

// or check at least one role from an array of roles:
$user->hasRole(['admin', 'user']);
```

Middleware
----------

[](#middleware)

### Default middleware

[](#default-middleware)

You can use the laravel default middleware can provided by `\Illuminate\Auth\Middleware\Authorize::class`

```
Route::middleware('can:create-user')->group(function () {

});
```

### Package middleware

[](#package-middleware)

If you can check at least one premission of many you can use the `allow` middleware

```
Route::middleware('allow:create|view|delete')->group(function () {

});
```

if you have another guard you can user

```
Route::middleware('allow:create|view|delete,guardName')->group(function () {

});
```

Contribution Guide
------------------

[](#contribution-guide)

This is still in beta, though I have confidence that it will work as expected. You can contribute by reporting bugs, fixing bugs, reviewing pull requests, and more ways. Go to the [**issues**](https://github.com/bdmehedi/laravel-permission/issues) section, and you can start working on an issue immediately. If you want to add or fix something, open a pull request.

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 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 ~129 days

Total

2

Last Release

877d ago

Major Versions

0.0.1 → 1.0.02023-12-17

### Community

Maintainers

![](https://www.gravatar.com/avatar/0dea3fd622e892b210ebe97b6d72ccbedf2a6097627e58d91c07ec06c29cc4d5?d=identicon)[bdmehedi](/maintainers/bdmehedi)

---

Top Contributors

[![bdmehedi](https://avatars.githubusercontent.com/u/25886111?v=4)](https://github.com/bdmehedi "bdmehedi (20 commits)")

---

Tags

permissionpermission-managerrole-managerlaravel-permissionlaravel role and premission

### Embed Badge

![Health badge](/badges/bdmehedi-laravel-permission/health.svg)

```
[![Health](https://phpackages.com/badges/bdmehedi-laravel-permission/health.svg)](https://phpackages.com/packages/bdmehedi-laravel-permission)
```

###  Alternatives

[zizaco/entrust

This package provides a flexible way to add Role-based Permissions to Laravel. Supports laravel 5|6|7|8

6.0k5.3M61](/packages/zizaco-entrust)[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[casbin/laravel-authz

An authorization library that supports access control models like ACL, RBAC, ABAC in Laravel.

324339.9k4](/packages/casbin-laravel-authz)[gghughunishvili/entrust

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

27524.0k](/packages/gghughunishvili-entrust)[hosseinhezami/laravel-permission-manager

Advanced permission manager for Laravel.

403.3k](/packages/hosseinhezami-laravel-permission-manager)[mindscms/entrust

This package provides a flexible way to add Role-based Permissions to Laravel Customized by Sami Mansour

2412.9k](/packages/mindscms-entrust)

PHPackages © 2026

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