Laravel Политика пользователя возвращает информацию аутентифицированного пользователя, а не внешнего пользователя - PullRequest
0 голосов
/ 22 января 2020

Я создал политику Laravel под названием «UserPolicy», которая должна отфильтровывать пользователей, у которых нет прав на редактирование, удаление и обновление других пользователей. Проблема в том, что я пытаюсь передать информацию внешнего пользователя в политику. Но вместо этого он просто возвращает информацию о проверенных пользователях.

Моя политика:

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'));
}

Например, я пользователь Боб. Я пытаюсь отредактировать пользователя, Джон. В качестве теста я включил функцию dd () для вывода информации о $ user, которая передается в Политику. После просмотра результатов, вместо того, чтобы передать информацию Джона, это Боб. Как я могу сделать это там, где это информация Джона, а не Боба.

Спасибо за вашу помощь, если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 22 января 2020

Первый параметр - аутентифицированный пользователь. Второй параметр - это ресурс. Попробуйте определить свою политику как:

/**
 * 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)
{
    //
}
...