【问题标题】:Adding and revoking permission to a specific user with a specific role为具有特定角色的特定用户添加和撤销权限
【发布时间】:2020-05-14 22:08:39
【问题描述】:

我正在使用这个包https://github.com/spatie/laravel-permission 来获取角色和权限。在我的应用程序中,我有几个角色,例如:

  1. 用户
  2. 雇主
  3. 店主
  4. 供应商

根据信任级别,我希望每个特定角色的人只能访问特定权限。对于角色为user 且ID 为7 的用户,我希望他或她拥有editor、'shopping' 的权限,并且没有其他权限。

同一角色user 的另一个ID 为65 的用户可以拥有editor,'shopping,'edit profile,'view maps' 权限。

当我查看文档时https://docs.spatie.be/laravel-permission/v3/basic-usage/role-permissions/

是否可以为特定角色的用户授予与同一角色的其他用户不同的权限?

【问题讨论】:

    标签: laravel laravel-permission


    【解决方案1】:

    像这样。?

    您可以管理的特定用户角色和权限

    $user = User::find(7);
    
    $user->assignRole("user"); // assign role to that user
    
    $user->givePermissionTo(['editor','shopping']); // for giving permission to user
    
    $user->revokePermissionTo(['editor','shopping']); // for revoke permission to user
    
    
    $user = User::find(65);
    
    $user->assignRole("user"); // assign role to that user
    
    $user->givePermissionTo(['editor','shopping','edit profile']); // for giving permission to user
    
    $user->revokePermissionTo(['editor','shopping','edit profile']); // for revoke permission to user
    
    

    【讨论】:

    • 这不会做操作想要的,如果你将权限应用于角色,每个具有该角色的用户都将拥有该权限。
    • @Remul 我认为他说用户 7 将拥有不同的权限,而用户 65 将拥有不同的权限,并且两个角色都是相同的 user
    • @KamleshPaul 是的,我就是这么说的。角色相同,但权限不同。
    • @Gandalf 我希望它对你有用,只是你需要创建角色关系,因为默认情况下 spatie 带有多对多用户角色关系
    • @KamleshPaul 我会试试这个。
    【解决方案2】:

    您可以为此使用Direct Permissions

    来自文档:

    可以向任何用户授予权限:

    $user->givePermissionTo('edit articles');
    
    // You can also give multiple permission at once
    $user->givePermissionTo('edit articles', 'delete articles');
    
    // You may also pass an array
    $user->givePermissionTo(['edit articles', 'delete articles']);
    

    可以撤销用户的权限:

    $user->revokePermissionTo('edit articles');
    
    //Or revoke & add new permissions in one go:    
    $user->syncPermissions(['edit articles', 'delete articles']);
    

    在你的情况下:

    // assign the role to the user
    $user->assignRole('user');
    
    // assign the permissions to the user
    $user->givePermissionTo(['editor', 'shopping', 'edit profile', 'view maps']);
    

    【讨论】:

      猜你喜欢
      • 2017-11-21
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 2014-05-16
      • 2013-08-28
      • 2020-08-08
      相关资源
      最近更新 更多