PHP code example of hosseinhezami / laravel-permission-manager

1. Go to this page and download the library: Download hosseinhezami/laravel-permission-manager library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

hosseinhezami / laravel-permission-manager example snippets


'providers' => [
    // ...
    HosseinHezami\PermissionManager\PermissionManagerServiceProvider::class,
],
'aliases' => [
    // ...
    'PermissionManager' => HosseinHezami\PermissionManager\Facades\PermissionManager::class,
],

namespace App\Models;

use HosseinHezami\PermissionManager\Traits\PermissionTrait;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use PermissionTrait;
}

return [
    'models' => [
        'role' => \HosseinHezami\PermissionManager\Models\Role::class,
        'permission' => \HosseinHezami\PermissionManager\Models\Permission::class,
        'user' => \App\Models\User::class,
    ],
    'tables' => [
        'roles' => 'roles',
        'permissions' => 'permissions',
        'role_permissions' => 'role_permissions',
        'user_roles' => 'user_roles',
    ],
    'cache_duration' => 60, // Cache permissions for 60 minutes
    'log_denials' => false, // Log permission/role denials
    'wildcards' => true, // Enable wildcard support
];

Schema::create('roles', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('slug')->unique();
    $table->text('description')->nullable();
    $table->timestamps();
});

Schema::create('permissions', function (Blueprint $table) {
    $table->id();
    $table->string('route')->unique();
    $table->timestamps();
});

Schema::create('role_permissions', function (Blueprint $table) {
    $table->unsignedBigInteger('role_id');
    $table->unsignedBigInteger('permission_id');
    $table->primary(['role_id','permission_id']);
    $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
    $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
    $table->timestamps();
});

Schema::create('user_roles', function (Blueprint $table) {
    $table->unsignedBigInteger('user_id');
    $table->unsignedBigInteger('role_id');
    $table->primary(['user_id','role_id']);
    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
    $table->timestamps();
});

//  ->middleware('pm');
Route::get('/admin', [AdminController::class, 'index'])
    ->middleware('pm:role:admin|manager');
Route::get('/posts', [PostController::class, 'create'])
    ->middleware('pm:permission:posts|post.create');

use HosseinHezami\PermissionManager\Facades\PermissionManager;

// Get all roles
$roles = PermissionManager::roles()->list();

// Get all permissions
$permissions = PermissionManager::permissions()->list();

// Sync routes with permissions
PermissionManager::permissions()->sync();

// Create permissions
PermissionManager::permissions()->create('users.create');
PermissionManager::permissions()->create(['users.create', 'users.edit']);

// Delete permissions
PermissionManager::permissions()->delete('users.create');
PermissionManager::permissions()->delete(['users.create', 'users.edit']);

// Create a role
PermissionManager::roles()->create([
    'slug' => 'admin',
    'name' => 'Administrator',
    'description' => 'Has full system access'
]);

// Role operations
PermissionManager::role('admin')->assignPermission('users.edit');
PermissionManager::role('admin')->revokePermission('users.edit');
PermissionManager::role('admin')->update(['name' => 'Super Admin']);
PermissionManager::role('admin')->delete();

// User operations
PermissionManager::user($userId)->assignRole(['admin', 'editor']);
PermissionManager::user($userId)->revokeRole('admin');
$roles = PermissionManager::user($userId)->roles();
$permissions = PermissionManager::user($userId)->permissions();
$hasRole = PermissionManager::user($userId)->hasRole('admin');
$hasPermission = PermissionManager::user($userId)->hasPermission('users.edit');

// Match all routes starting with 'admin'
'admin.*'

// Match all routes ending with '.admin'
'*.admin'

// Match all routes containing 'admin'
'*admin*'

// Get all roles
$user->roles;

// Get all permissions (including through roles)
$user->permissions();

// Assign a role
$user->assignRole('admin');

// Revoke a role
$user->revokeRole('admin');

// Check if user has a role
$user->hasRole('admin');

// Check if user has a permission
$user->hasPermission('users.edit');
bash
php artisan vendor:publish --provider="HosseinHezami\PermissionManager\PermissionManagerServiceProvider" --tag="config"
php artisan vendor:publish --provider="HosseinHezami\PermissionManager\PermissionManagerServiceProvider" --tag="migrations"
bash
php artisan migrate