У меня есть политика галереи и политика фотографий, контроллер галереи и контроллер фотографий.
Это работает следующим образом:
user-> hasMany galleries -> hasMany photos
У меня есть страница загрузки фотографий (с Dropzone), которая использует фотоконтроллер.
URL-адрес выглядит так: / gallery / 3 / upload
Я хочу ограничить доступ к этой странице, только если пользователь является владельцем галереи 3. Но эта страница использует PhotoPolicy, которая использует модель Photo, а не Gallery модель.
Как авторизовать эту страницу, используя GalleryPolicy вместо PhotoPolicy? Или мне нужно скопировать метод view из GalleryPolicy и использовать его также в PhotoPolicy?
РЕДАКТИРОВАТЬ:
Я не понимаю этого ...
В моем PhotoPolicy:
public function view(User $user, Photo $photo)
{
return false;
}
В моем контроллере Photos:
$this->authorize('view', $photo);
В моем AuthenticationServiceProvider:
protected $policies = [
\App\Gallery::class => \App\Policies\GalleryPolicy::class,
\App\Photo::class => \App\Policies\PhotoPolicy::class,
];
Результат: страница загружается просто хорошо .. даже если возвращение ложно .. почему?