Laravel: получить содержимое authorize() при неавторизации
Я передаю 403 ошибки с
App\Exceptions\Handle\Handler
а затем отображение пользовательского представления ошибок в зависимости от маршрута.
Например, если вы находитесь на
admin/some/path
страница, то я беру базовую часть из текущей (
admin.some.path
) имя маршрута, и я показываю пользовательский
admin
шаблон ошибки.
.../приложение/Исключения/Handler.php
public function render($request, Throwable $exception){
if ($exception instanceof AuthorizationException) {
$parts = explode('.', $request->route()->getName());
if (isset($parts[0])){
$errorView = "{$parts[0]}.errors.403";
if (view()->exists($errorView)){
return response()->view($errorView, [], 403);
}
}
}
return parent::render($request, $exception);
}
Все в порядке, но я проверяю разрешение пользователя с помощью
$this->authorize('some_permission')
и если пользователь неавторизован, я хочу показать, какое разрешение требуется для просмотра. (Я использую ворота Laravel)
.../приложение/Http/Контроллеры/Админ/SomeController.php
public function index(Request $request){
$this->authorize('some_permission');
return view('admin.pages.some.page');
}
Ожидая чего-то подобного.
public function render($request, Throwable $exception){
if ($exception instanceof AuthorizationException) {
$parts = explode('.', $request->route()->getName());
if (isset($parts[0])){
$errorView = "{$parts[0]}.errors.403";
if (view()->exists($errorView)){
$requiredPermission = $request->...->requiredPermission(); // 'some_permission'
return response()->view($errorView, [
'requiredPermission' => $requiredPermission
], 403);
}
}
}
return parent::render($request, $exception);
}
.../ресурсы/просмотры/админ/ошибки/403.blade.php
<h1>Permission Required: {{$requiredPermission}}</h1>
Если это невозможно, что бы вы посоветовали мне сделать?