Групповой доступ к страницам в laravel - PullRequest
0 голосов
/ 25 января 2019

Внутри AuthServiceProvider определено управление доступом.Мне нужно проверить разрешение на доступ к странице в маршрутах web.php.Если пользователь не является администратором, страница должна перенаправить страницу ошибки или страницу не найдена.

Как создать промежуточное ПО, которое перенаправляет на страницу 404, если кто-то пытается получить доступ к странице с URL.

AuthServiceProvider

Gate::define('isAdmin',function($user){
    return $user->type === 'admin';
});

Gate::define('isGeneralUser',function($user){
    return $user->type === 'user';
});

Gate::define('isPaidUser',function($user){
    return $user->type === 'paid';
});

Маршрут web.php

if (Gate::allows('isAdmin') && Gate::allows('isPaidUser')) {
    Route::get('/home-page', function () {
        return view('pages.trades');
    });
}

1 Ответ

0 голосов
/ 25 января 2019

создать промежуточное ПО

class CheckIsTradeable
{

    public function handle($request, Closure $next)
    {
        if ($request->user()->type !== 'admin' && $request->user()->type !== 'paid') {
            abort(404);
        }

        return $next($request);
    }
}

Зарегистрируйтесь внутри Kernal

protected $routeMiddleware = [
    ...
    'isTradeable' => \App\Http\Middleware\CheckIsTradeable::class,
];

и проверьте его на своем маршруте

Route::get('/home-page', function () {
    return view('pages.trades');
})->middleware('isTradeable');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...