bdmehedi/laravel-permission

A laravel package to manage laravel roles and permissions

1.0.0 2023-12-17 09:40 UTC

This package is auto-updated.

Last update: 2024-09-17 11:15:13 UTC


README

Laravel Role & 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

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)

use HasPermissions

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

$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

// 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

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

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

Withdraw permissions from Role

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

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

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

$user->hasRole('admin');

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

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

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

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 section, and you can start working on an issue immediately. If you want to add or fix something, open a pull request.