美文网首页
Laravel-ACL 权限相关操作

Laravel-ACL 权限相关操作

作者: 伍源辉 | 来源:发表于2017-01-04 17:58 被阅读45次

    创建权限

    $permission = new Permission();
    $permUser = $permission->create([ 
        'name'        => 'user',
        'slug'        => [          // 传入权限数组
            'create'     => true,
            'view'       => true,
            'update'     => true,
            'delete'     => true,
            'view.phone' => true
        ],
        'description' => 'manage user permissions'
    ]);
    
    $permission = new Permission();
    $permPost = $permission->create([ 
        'name'        => 'post',
        'slug'        => [          // 传入权限数组
            'create'     => true,
            'view'       => true,
            'update'     => true,
            'delete'     => true,
        ],
        'description' => 'manage post permissions'
    ]);
    

    给角色分配权限

    提醒: 你可以传入对象、数组、permission->id 或者只传入 name。

    $roleAdmin = Role::first(); // administrator
    // 传入对象
    $roleAdmin->assignPermission($permUser);
    // 传入 id
    $roleAdmin->assignPermission($permUser->id);
    // 传入 name
    $roleAdmin->assignPermission('user');
    // 传入集合
    $roleAdmin->assignPermission(Permission::all());
    

    一次传入多个权限:

    // 数组形式的多个权限
    $roleAdmin->assignPermission(array($permUser, $permPost->id));
    // 以逗号分隔的多个角色 slugs
    $roleAdmin->assignPermission('user, post');
    

    提醒: 如果权限不存在,系统会抛出异常。

    为角色移除权限

    提醒: 你可以传入对象、数组、permission->id 或者只传入 name。

    $roleAdmin = Role::first(); // administrator
    // 传入对象
    $roleAdmin->revokePermission($permUser);
    // 传入 id
    $roleAdmin->revokePermission($permUser->id);
    // 传入 name
    $roleAdmin->revokePermission('user');
    // 传入集合
    $roleAdmin->revokePermission(Permission::all());
    

    一次传入多个权限:

    // 数组形式的多个权限
    $roleAdmin->assignPermission(array($permUser, $permPost->id));
    // 以逗号分隔的多个角色 slugs
    $roleAdmin->assignPermission('user, post');
    

    提醒: 如果权限不存在,系统会抛出异常。

    同步角色权限

    你可以传入权限对象数组、ids 或者 slugs 来同步权限给角色(参数中新的权限会插入到中间表,参数中没有的权限会从中间表移除)。

    $roleAdmin->syncPermissions([1,2,3]);
    $roleAdmin->syncPermissions('user, post');
    $roleAdmin->syncPermissions((array($permUser, $permPost));
    // 传入集合
    $roleAdmin->syncPermissions(Permission::all());
    

    提醒: 如果权限不存在,系统会抛出异常。

    撤销角色的所有权限

    $roleAdmin->revokeAllPermissions();
    

    获取角色的所有权限

    $roleAdmin->getPermissions();
    

    相关文章

      网友评论

          本文标题:Laravel-ACL 权限相关操作

          本文链接:https://www.haomeiwen.com/subject/motavttx.html