PHP code example of abdulbaset / laravel-accessify
1. Go to this page and download the library: Download abdulbaset/laravel-accessify 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/ */
abdulbaset / laravel-accessify example snippets
use Abdulbaset\Accessify\Traits\HasRoles;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasRoles;
// ...
}
// Using role middleware
Route::get('/admin', function () {
// Users with either 'admin' or 'super-admin' role can access this route
})->middleware('role:admin|super-admin');
Route::get('/posts', function () {
// Users with either 'view-posts' or 'manage-posts' permission can access this route
})->middleware('permission:view-posts|manage-posts');
Route::get('/dashboard', function () {
// Users with either 'admin' role or 'view-dashboard' permission can access this route
})->middleware('role_or_permission:admin|view-dashboard');
class YourController extends Controller
{
public function __construct()
{
// Authentication middleware
$this->middleware('auth');
// Role middleware with specific methods
$this->middleware('role:admin')->only('index');
// Or for multiple roles
$this->middleware('role:admin|editor')->only('index');
// Using permission middleware
$this->middleware('permission:edit-posts')->only('store');
// Or for multiple permissions
$this->middleware('permission:edit-posts|store-posts')->only('store');
// Using role or permission middleware
$this->middleware('role_or_permission:admin|edit-posts')->only('store');
}
}
use Illuminate\Routing\Controllers\Middleware;
use Illuminate\Routing\Controllers\HasMiddleware;
class YourController implements HasMiddleware
{
public static function middleware(): array
{
return [
// Authentication middleware
'auth',
// Role middleware with specific methods
new Middleware('role:admin', ['index', 'show']),
// Multiple roles with OR condition
new Middleware('role:admin|editor', ['create', 'store']),
// Permission middleware with specific methods
new Middleware('permission:create', ['store']),
// Multiple permissions with OR condition
new Middleware('permission:create|update|delete', ['destroy']),
// Role or permission middleware with multiple methods
new Middleware('role_or_permission:admin|edit-posts', ['edit', 'update']),
];
}
}
use Illuminate\Routing\Controllers\Middleware;
use Illuminate\Routing\Controllers\HasMiddleware;
class YourController implements HasMiddleware
{
public static function middleware(): array
{
return [
// Authentication middleware
'auth',
// Role middleware with specific methods
new Middleware('role:admin', ['index', 'show']),
// Multiple roles with OR condition
new Middleware('role:admin|editor', ['create', 'store']),
// Permission middleware with specific methods
new Middleware('permission:create', ['store']),
// Multiple permissions with OR condition
new Middleware('permission:create|update|delete', ['destroy']),
// Role or permission middleware with multiple methods
new Middleware('role_or_permission:admin|edit-posts', ['edit', 'update']),
];
}
}
// User must have at least one of the specified roles
Route::get('/admin', function () {
// User must have EITHER 'admin' OR 'super-admin' role
})->middleware('role:admin|super-admin');
// User must have at least one of the specified permissions
Route::get('/posts', function () {
// User must have EITHER 'view-posts' OR 'manage-posts' permission
})->middleware('permission:view-posts|manage-posts');
// All routes in this group min'])->group(function () {
Route::get('/admin/dashboard', 'AdminController@dashboard');
Route::get('/admin/users', 'AdminController@users');
});
// All routes in this group , 'PostController@edit');
Route::put('/posts/{post}', 'PostController@update');
});
// Get the user's role
$role = $user->role;
// Check if user has a specific role
$user->hasRole('admin');
// Check if user has any of the specified roles
$user->hasAnyRole(['admin', 'editor']);
// Check if user has a permission
$user->hasPermission('edit-posts');
// Check if user has any of the given permissions
$user->hasAnyPermission(['edit-posts', 'delete-posts']);
// Check if user has all of the given permissions
$user->hasAllPermissions(['edit-posts', 'delete-posts']);
// Assign a role to a user (replaces any existing role)
$user->giveRole('editor');
// Sync role (alias for giveRole)
$user->syncRoles('editor');
// Remove the user's role
$user->removeRole();
// Create a new role with description
$role = Role::create([
'name' => 'Editor',
'slug' => 'editor',
'description' => 'Can edit and manage content'
]);
// Update role description
$role->update(['description' => 'Updated role description']);
// Get role description
$description = $role->description;
// Create a new permission with description
$editPosts = Permission::create([
'name' => 'Edit Posts',
'slug' => 'edit-posts',
'description' => 'Allows editing of existing posts'
]);
// Update permission description
$permission->update(['description' => 'Updated permission description']);
// Get permission description
$description = $permission->description;
// Assign a role to a user
$user->giveRole('admin');
// Check user's role
if ($user->hasRole('admin')) {
// User is an admin
}
// Get the role name
$roleName = $user->role ? $user->role->name : 'No role';
// Remove role
$user->removeRole();
// Check if user has any of these roles
if ($user->hasAnyRole(['admin', 'moderator'])) {
// User is either admin or moderator
}
// Get a role
$role = Role::where('slug', 'admin')->first();
// Check if role has a permission
$role->hasPermission('edit-posts');
// Give permission to a role
$role->givePermission('edit-posts');
// Assign multiple permissions
$role->givePermissions(['edit-posts', 'delete-posts']);
// Check if role has any permission
$role->hasAnyPermission(['edit-posts', 'delete-posts']);
// Sync all permissions for a role (removes all existing permissions and adds the given ones)
$role->syncPermissions(['edit-posts', 'delete-posts']);
// Remove a specific permission from a role
$role->removePermission('edit-posts');
// Remove multiple permissions from a role
$removedCount = $role->removePermissions(['edit-posts', 'delete-posts']); // Returns number of permissions removed
// Remove all permissions from a role
$removedCount = $role->removeAllPermissions(); // Returns number of permissions removed
// Get all permissions for a role
$rolePermissions = $role->getPermissions();
// Get all permissions for a user's role
$userPermissions = $user->getPermissions();
// Example: Loop through permissions
foreach ($user->getPermissions() as $permission) {
echo $permission->name; // e.g., 'edit-posts'
echo $permission->description; // e.g., 'Can edit posts'
}
// Check if user has any permissions
if ($user->getPermissions()->isNotEmpty()) {
// User has permissions
}
// Check if role has any permissions
if ($role->getPermissions()->isNotEmpty()) {
// Role has permissions
}
use Illuminate\Foundation\Http\FormRequest;
class StoreProductRequest extends FormRequest
{
public function authorize()
{
return $this->user() && $this->user()->hasPermission('create-product');
}
public function rules()
{
return [
'name' => '
namespace App\Policies;
use App\Models\Product;
use App\Models\User;
class ProductPolicy
{
public function viewAny(User $user)
{
return $user->hasPermission('view-products');
}
public function view(User $user, Product $product)
{
return $user->hasPermission('view-product');
}
public function create(User $user)
{
return $user->hasPermission('create-product');
}
// ... other methods
}
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CustomPermission
{
public function handle(Request $request, Closure $next, ...$permissions): Response
{
if (!auth()->check()) {
abort(403, 'Unauthenticated.');
}
foreach ($permissions as $permission) {
if (auth()->user()->hasPermission($permission)) {
return $next($request);
}
}
abort(403, 'Unauthorized action.');
}
}