Перепишите промежуточное ПО laravel nova для ответа 404 - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужно вернуть страницу ошибки 404 вместо 403, когда обычный пользователь пытается получить доступ к страницам администратора.Промежуточное программное обеспечение Nova, которое отвечает за это, находится здесь /nova/src/Http/Middleware.И выглядит так:

<?php

namespace Laravel\Nova\Http\Middleware;

use Laravel\Nova\Nova;

class Authorize
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return \Illuminate\Http\Response
     */
    public function handle($request, $next)
    {
        return Nova::check($request) ? $next($request) : abort(403);
    }
}

Если я здесь перейду abort(403) на abort(404) - он отлично работает и делает именно то, что мне нужно.

Как расширить это промежуточное ПО для использованияэто в моем приложении.Что я должен сделать, чтобы правильно переписать промежуточное ПО в моем приложении, чтобы я мог в будущем делать обновления Nova и не переписывать эти изменения

Что я пробовал: Расширить это промежуточное ПО в

<?php

namespace App\Http\Middleware;

use Laravel\Nova\Nova;

class NovaAuthorize extends \Laravel\Nova\Http\Middleware\Authorize
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return \Illuminate\Http\Response
     */
    public function handle($request, $next)
    {
        return Nova::check($request) ? $next($request) : abort(404);
    }
}

и добавьте его в мое промежуточное ПО

protected $middleware = [
        ...
        \App\Http\Middleware\NovaAuthorize::class, // nova access

    ];

, но это не дало эффекта

1 Ответ

0 голосов
/ 07 декабря 2018

в /app/Providers/NovaServiceProvider.php

protected function gate()
    {
        Gate::define('viewNova', function ($user) {
            if( !$user->isAdmin() ){ 
                abort(404);
            }
            return true;
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...