Laravel用户策略返回经过身份验证的用户信息,而不是外部用户



我创建了一个名为"UserPolicy"的Laravel策略,该策略应该过滤掉无权编辑,删除和更新其他用户的用户。问题是我正在尝试将外部用户的信息传递给策略。但相反,它只返回经过身份验证的用户信息。

我的政策:

public function edit(?User $user)
{
if(auth()->check()) {
dd($user);
$userpower = auth()->user()->roles()->min('power');
if($userpower <= $user->power) {
return true;
} else {
return false;
}
} else {
return false;
}
}

我的控制器:

public function edit(User $user)
{
$this->authorize('edit', $user);
$roles = Role::all();
$user = User::where('steamid', $user->steamid)->with('roles')->first();
return view('manage.includes.users.edit')->with(compact('user', 'roles'));
}

例如,我是用户 Bob。我正在尝试编辑用户,约翰。作为测试,我包含了 dd(( 函数来转储传递到策略中的$user信息。看到结果后,传递的不是约翰的信息,而是鲍勃的信息。我怎样才能把它放在约翰的信息而不是鲍勃的信息的地方。

感谢您的帮助,如果您需要更多信息,请告诉我。

第一个参数是经过身份验证的用户。第二个参数是资源。尝试将策略定义为:

/**
* Can a guest user, or an authenticated user (let's call this first user Bob)
* edit another user (let's call that second user John) ?
*/
public function edit(?User $bob, User $john)
{
//
}

最新更新