Политика Laravel в модели и как избежать авторизации в определенных представлениях.

Я постараюсь объяснить. Я занимаюсь разработкой приложения для электронной коммерции и для обеспечения бэкэнд-авторизации я применил Политики laravel к Модели (модели продукта).

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

Политики применяются ко всей модели, независимо от того, защищено ли представление маршрута, и я не могу найти способ оставить некоторые представления (например, frontend> list products), получая информацию из модели без политики авторизации.

Например: политики, примененной к View в бэкэнде:

public function view(User $user)
{
$method = (string)$this->ability;
if ($user->hasRole($this->Model) === null) {
return 0;

}
return $user->hasRole($this->Model)->$method;
}

Мне нужно создать еще одну общедоступную функцию в политике продуктов, в которой перечислены продукты в веб-интерфейсе, не запрашивая авторизацию у пользователя.

Благодарю.

0

Решение

Возможно, вы захотите создать функцию конструктора в вашем контроллере, которая позволит неаутентифицированным пользователям получать доступ к представлению продуктов. Следующий фрагмент обеспечивает доступ ко всем функциям контроллера, кроме функции уничтожения (уничтожения сеанса, выхода из системы).

public function __construct()
{
$this->middleware('guest', ['except' => 'destroy']);
}

Я надеюсь, что это поможет вам в правильном направлении.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]