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>

Если это невозможно, что бы вы посоветовали мне сделать?

0 ответов

Другие вопросы по тегам