Laravel-permission 使用说明
操作用户
// 查询直接分配给用户的权限列表(用户 权限 关系表)(直接分配)
$permissions = $user->permissions; 或者 $user->getDirectPermissions()
// 查询用户角色的权限列表(用户 角色 关系表)(角色分配)
$user->getPermissionsViaRoles();
// 获取用户的所有权限 (包含角色分配 和 直接分配的)
$permissions = $user->getAllPermissions();
// 获取该用户的所有角色
$roles = $user->getRoleNames();
// 仅返回具有角色 'writer' 的用户, 要有 HasRoles 特征
$users = User::role('writer')->get();
// 仅返回具有 'edit articles'(继承或直接)权限的用户,(包含角色分配 和 直接分配)
$users = User::permission('edit articles')->get();
// 判断用户是否有该权限 (用户 角色 关系表,用户 权限 关系表) (参数:权限)
$user->can('edit articles');
// 判断用户是否有该权限 (用户 角色 关系表,用户 权限 关系表) (参数:权限)
$user->hasPermissionTo('edit articles');
// 判断用户是否有该权限 (用户 角色 关系表,用户 权限 关系表) (参数:权限)(支持多个权限, 其中一个为true返回true)
$user->hasAnyPermission(['edit articles', 1, 5]);
// 判断用户是否有该角色 (参数:角色)
$user->hasRole('管理员')
// 判断用户是否有该角色 (可查询多个)(其中一个为true返回true)(参数:角色)
$user->hasAnyRole(Role::all());
// 增加用户权限(用户 权限 关系表插入) (参数:权限, 可以一个,多个字符串逗号隔开,或者数组) $user->givePermissionTo('edit articles');
// 添加权限,同时删除旧权限
$user->syncPermissions(['edit articles', 'delete articles']);
// 删除用户权限
$user->revokePermissionTo('edit articles');
// 增加用户角色 (用户 角色 关系表插入)(可分配一个或多个) (参数:角色id) $user->assignRole(3);
// 添加角色,同时删除旧角色
$user->syncRoles(['writer', 'admin']);
// 删除用户角色
$user->removeRole('writer');
操作角色
// 创建角色 use Spatie\Permission\Models\Role; $role = Role::create(['name' => '无敌管理员']);
// 增加角色权限(原有权限不变) (参数:权限)
$role->givePermissionTo($permission);
// 增加角色权限(删除原有权限) (参数:权限)
$role->syncPermissions($permissions);
// 删除角色权限
$role->revokePermissionTo($permission);
操作权限
// 创建权限 use Spatie\Permission\Models\Permission; $permission = Permission::create(['name' => 'Create Article2']);
// 增加角色权限(参数:角色)
$permission->assignRole($role);
//增加角色权限(参数:角色)(目前没发现和上面的有什么区别)
$permission->syncRoles($roles);
// 删除角色权限
$permission->removeRole($role);
定义守卫 和 使用HasRoles特征
use Illuminate\Database\Eloquent\Model; use Spatie\Permission\Traits\HasRoles; class Page extends Model { use HasRoles; protected $guard_name = 'web'; // 使用任何你想要的守卫 // ... }