• 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 SpatiePermissionModelsRole;
    $role = Role::create(['name' => '无敌管理员']);


    // 增加角色权限(原有权限不变) (参数:权限)
    $role->givePermissionTo($permission);
    // 增加角色权限(删除原有权限) (参数:权限)
    $role->syncPermissions($permissions);

    // 删除角色权限
    $role->revokePermissionTo($permission);
    
    

    操作权限

    // 创建权限
    use SpatiePermissionModelsPermission;
    $permission = Permission::create(['name' => 'Create Article2']);

    // 增加角色权限(参数:角色)
    $permission->assignRole($role);
    //增加角色权限(参数:角色)(目前没发现和上面的有什么区别)
    $permission->syncRoles($roles);

    // 删除角色权限
    $permission->removeRole($role);


    定义守卫 和 使用HasRoles特征

    use IlluminateDatabaseEloquentModel;
    use SpatiePermissionTraitsHasRoles;
    
    class Page extends Model
    {
       use HasRoles;
    
       protected $guard_name = 'web'; // 使用任何你想要的守卫
    
       // ...
    }
  • 相关阅读:
    51nod 1494 选举拉票 | 线段树
    51nod 1295 XOR key | 可持久化Trie树
    Codeforces 438D (今日gg模拟第二题) | 线段树 考察时间复杂度的计算 -_-|||
    51nod 1563 坐标轴上的最大团(今日gg模拟第一题) | 线段覆盖 贪心 思维题
    良心的可持久化线段树教程
    51nod 1593 公园晨跑 | ST表(线段树?)思维题
    51nod 1595 回文度 | 马拉车Manacher DP
    51nod 1522 上下序列
    胡小兔的OI日志3 完结版
    51nod 1510 最小化序列 | DP 贪心
  • 原文地址:https://www.cnblogs.com/longqin/p/11926039.html
Copyright © 2020-2023  润新知