namespace App\Models;
use HosseinHezami\PermissionManager\Traits\PermissionTrait;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use PermissionTrait;
}
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');