В настоящее время я добавляю разрешения/роли/авторизацию в приложение Laravel.
В базе данных приложения есть пользователи, компании и продукты. У компаний много пользователей, и продукт принадлежит компании.
Теперь я хочу авторизовать пользователей компании, чтобы создать продукт для своей компании.
В моем ProductController.php у меня есть что-то вроде этого:
public function create(Request $request)
{
$company = Company::findOrFail($request->get('company_id'));
return view('product.create', compact('company');
}
Одним из вариантов было бы использовать Gate::authorize()
после получения компании и передать $company
методу авторизации.
Вопрос: Но как мне это решить, если я не хочу использовать Gate::authorize()
. Итак, на случай, если я захочу использовать политики?
Еще Вопрос: Вижу несколько способов авторизации: Gate::authorize()
, политики, StoreProduct's authorize()
, ... Какой из них использовать? Должен ли я всегда реализовывать событие authorize()
StoreProduct, например, если я использую политики?
permission
, напримерmanage product
, или отдельные, напримерcreate product
иupdate product
и т. д. ПользовательскиеRequest
классы, чтобы проверить, есть ли у пользователя разрешение. Дайте мне знать, если вы заинтересованы в этом подходе, и я добавлю пример кода. - person Mike Ross   schedule 08.10.2019User
):$company = $request->user()->company;
- person adam   schedule 08.10.2019Gate::authorize()
использует политики, иauthorize()
тоже их использует. Покажите, пожалуйста, ваш маршрут для этого метода создания и политику для него. - person Styx   schedule 16.10.2019