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