Действия всегда возвращаются неавторизованными - PullRequest
2 голосов
/ 24 октября 2019

Я создаю простой сайт электронной коммерции как личный проект.

У меня есть таблица products, которая создает отношения между каждым продуктом, указанным пользователем.

$table->foreign('owner_id')->references('id')->on('users')->onDelete('cascade');

Отношение работает как положено, каждому продукту присваивается owner_id, который равен идентификатору пользователя, который перечислил продукт. Я проверил базу данных в PHPMyAdmin, и она каждый раз указывает на правильного пользователя.

Я создал политику с помощью artisan и указал на нее свою модель, чтобы использовать автоматическое связывание модели маршрута

php artisan make:policy productsPolicy --model=products
public function canView(User $user, products $product)
{
    return $product->owner_id == $user->id;
}

Мой AuthServiceProvider указывает на соответствующую политику

protected $policies = [
    'App\Model' => 'App\Policies\productsPolicy',
];

Затем я ссылаюсь на политику в моем контроллере, чтобы только создатель мог удалить свой список

public function destroy(products $product)
{
    $this->authorize('canView', $product);
    $product->delete();

    return redirect('/');
}

Нетнезависимо от того, вошел ли я в систему как пользователь, создавший проект, или нет, всегда выдается следующее исключение

AccessDeniedHttpException

1 Ответ

1 голос
/ 24 октября 2019

Вы не правильно зарегистрировали свою политику

protected $policies = [
    'App\Model' => 'App\Policies\productsPolicy', // 'App\Model' probably isn't a model
];

Это должно быть

protected $policies = [
    'App\products' => 'App\Policies\productsPolicy',
];

или импортировать класс

use App\Policies\productsPolicy;
use App\products;

protected $policies = [
    products::class => productsPolicy::class,
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...