【问题标题】:Entrust - Get Permission Based on RoleEntrust - 根据角色获取权限
【发布时间】:2015-09-30 02:02:39
【问题描述】:

我在 Laravel 5.1 中使用 Entrust。从他们的 api 中,我可以看到我可以像这样检查用户权限: $user->can('edit_posts'), 但是,我希望能够像这样检查特定角色的权限: $role->can('edit_posts'), 返回 TrueFalse

上述方法无效。那不可能吗?检查角色说manager是否有权edit_post的正确方法是什么?

【问题讨论】:

    标签: laravel laravel-5 roles user-permissions


    【解决方案1】:

    这就是我现在所做的,虽然我不确定它是否是正确的常规方法,但它确实有效。

    我所做的是在Role() 模型中创建了一个静态函数,该函数检查role_idpermission 并返回真或假。代码如下:

    namespace App\Models;
    use Zizaco\Entrust\EntrustRole;
    use DB;
    
    class Role extends EntrustRole {   
    
          /**
            * Checks if the role has a permission by its name.
            *
            * @param numeric $roleId|string $permissionName - Role ID and permission name.
            *
            * @return bool
          */
             public static function hasPermission($roleId, $permissionName)
             {
                  $role = Role::findOrFail($roleId);
                  $role_permissions = $role->perms()->get();
                       foreach ($role_permissions as $permission) {
                           if ($permission->name == $permissionName) {
                               return true;
                           }
                       }
                  return false;
             }
    }
    

    在控制器中的使用:

    $hasPermission = Role::hasPermission($roleId, 'edit_post');
    

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 2017-02-05
      • 1970-01-01
      • 2014-05-08
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-21
      相关资源
      最近更新 更多