PHP code example of openbackend / laravel-permission

1. Go to this page and download the library: Download openbackend/laravel-permission 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/ */

    

openbackend / laravel-permission example snippets




namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use OpenBackend\LaravelPermission\Traits\HasRolesAndPermissions;

class User extends Authenticatable
{
    use HasRolesAndPermissions;
    
    // ... your model code
}

use OpenBackend\LaravelPermission\Models\Role;
use OpenBackend\LaravelPermission\Models\Permission;

// Create permissions
$editPosts = Permission::create(['name' => 'edit posts', 'group' => 'posts']);
$deletePosts = Permission::create(['name' => 'delete posts', 'group' => 'posts']);

// Create role with permissions
$role = Role::create(['name' => 'writer'])
    ->givePermissionTo($editPosts, $deletePosts);

// Assign role to user
$user->assignRole('writer');

// Check if user has permission
if ($user->can('edit posts')) {
    // User can edit posts
}

// Check multiple permissions
if ($user->hasAnyPermission(['edit posts', 'delete posts'])) {
    // User has at least one permission
}

// Check all permissions
if ($user->hasAllPermissions(['edit posts', 'delete posts'])) {
    // User has all permissions
}

// Create parent role
$admin = Role::create(['name' => 'admin']);

// Create child role
$moderator = Role::create(['name' => 'moderator', 'parent_id' => $admin->id]);

// Child roles inherit parent permissions automatically
$admin->givePermissionTo('manage users');
$moderator->hasPermissionTo('manage users'); // true (inherited)

// Give temporary permission
$user->givePermissionTo('access premium', [
    'expires_at' => now()->addDays(30)
]);

// Check if permission is still valid
if ($user->hasValidPermission('access premium')) {
    // Permission is still active
}

// Create resource-specific permission
$permission = Permission::create([
    'name' => 'edit',
    'resource_type' => 'App\Models\Post',
    'resource_id' => 1
]);

// Assign to user
$user->givePermissionTo($permission);

// Check resource permission
if ($user->can('edit', $post)) {
    // User can edit this specific post
}

// In your routes/web.php
Route::group(['middleware' => ['permission:edit posts']], function () {
    Route::get('/posts/{post}/edit', [PostController::class, 'edit']);
});

// Multiple permissions (any)
Route::group(['middleware' => ['permission:edit posts|delete posts']], function () {
    // Routes
});

// Multiple permissions (all)
Route::group(['middleware' => ['permission:edit posts,delete posts']], function () {
    // Routes
});

// Role-based middleware
Route::group(['middleware' => ['role:admin']], function () {
    // Admin only routes
});

// Role assignment
$user->assignRole('admin');
$user->assignRole(['admin', 'editor']);
$user->assignRole($roleObject);

// Role removal
$user->removeRole('admin');
$user->syncRoles(['admin', 'editor']);

// Permission assignment
$user->givePermissionTo('edit posts');
$user->revokePermissionTo('edit posts');
$user->syncPermissions(['edit posts', 'delete posts']);

// Checking permissions
$user->hasPermissionTo('edit posts');
$user->hasAnyPermission(['edit posts', 'delete posts']);
$user->hasAllPermissions(['edit posts', 'delete posts']);

// Checking roles
$user->hasRole('admin');
$user->hasAnyRole(['admin', 'editor']);
$user->hasAllRoles(['admin', 'editor']);

// Getting permissions/roles
$user->getAllPermissions();
$user->getDirectPermissions();
$user->getPermissionsViaRoles();
$user->getRoleNames();

// Permission management
$role->givePermissionTo('edit posts');
$role->revokePermissionTo('edit posts');
$role->syncPermissions(['edit posts', 'delete posts']);

// Hierarchy
$role->setParent($parentRole);
$role->getChildren();
$role->getAncestors();
$role->getDescendants();

// Bulk operations
Role::bulkCreate(['admin', 'editor', 'viewer']);
$role->bulkAssignPermissions(['edit posts', 'delete posts']);
bash
php artisan vendor:publish --provider="OpenBackend\LaravelPermission\PermissionServiceProvider" --tag="migrations"
php artisan migrate
bash
php artisan vendor:publish --provider="OpenBackend\LaravelPermission\PermissionServiceProvider" --tag="config"