Laravel Политика Гость Пользователь - PullRequest
4 голосов
/ 24 мая 2019

У меня есть следующая политика:

<?php

namespace App\Policies;

use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;

class EventPolicy
{
    use HandlesAuthorization;

    /**
     * Determine whether the user can view the whole model.
     *
     * @param User $user
     * @return boolean
     */
    public function list(?User $user) {
        return true;
    }

}

AuthServiceProvider содержит правильную привязку:

protected $policies = [
    Event::class => EventPolicy::class,
];

В моем контроллере:

public function index() {
    $this->authorize('list');
    return $this->repository->paginate();
}

Это возвращениеa 403 Запрещенный ответ:

This action is unauthorized.

В документации Laravel говорится, что вы можете сделать так, чтобы пользователь объявлял User необязательным или устанавливал значение по умолчанию null.Я пробовал оба безрезультатно.

Я бегу v5.8

Есть идеи?

1 Ответ

0 голосов
/ 24 мая 2019

Это, вероятно, внутреннее неправильное поведение Ларавела, потому что логика как-то нарушена (это всего лишь предположение).

В этом конкретном случае вам не следует добавлять политику авторизации для листинга, поскольку всем разрешено видеть результаты.

Так что вы должны просто сделать это так:

public function index()
{
    return $this->repository->paginate();
}

Определяйте политики только в том случае, если пользователи действительно должны быть уполномочены на что-либо.

Позднее редактирование : возможно ли, что в поставщике услуг вы импортировали класс Event из Laravel вместо модели Event?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...