如何检查不同角色的权限几乎相同

时间:2019-01-16 17:16:21

标签: php laravel-5 user-permissions

场景1:

假设我有一个有3个用户super-adminmanageruser的请假系统。

  • super-admin可以欺骗自己提交的叶子以及manageruser提交的叶子
  • manager可以欺骗自己的叶子和user
  • user只能欺骗自己的叶子

我为给定规则设置了以下权限:

  • Super Admin create-allretrieve-allupdate-alldelete_all
  • Manager create-subretrieve-subupdate-subdelete_sub
  • User create-selfretrieve-selfupdate-selfdelete_self

我不能将其用于编程,因为这会使事情变得非常复杂且难以测试。 我将不得不查看角色是否为user,然后看到不同的权限,以及用户是否为manager,然后检查另一个权限。

方案2:

如果我只有create leaveadminmanager这样的权限,例如user,那么所有人都将具有相同的权限。以下策略足以检查权限:

    class LeavePolicy
{
    /**
     * Determine if the given leave can be updated by the user.
     *
     * @param  \App\User  $user
     * @param  \App\Leave  $leave
     * @return bool
     */
    public function update(User $user, Leave $leave)
    {
        if($user->roleIs('manager') {
            return $user->id === $leave->user->manager_id;
        }
        elseif($user->roleIs('user') {
            return $user->id === $leave->user_id;           
        }

        return false
    }
}

但是sceanrio 1的最佳方法是什么?有人可以分享经验吗?谢谢大家!

0 个答案:

没有答案