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
}
// 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
});