Laravel дает пользователю доступ к определенному маршруту при соблюдении условий - PullRequest
0 голосов
/ 20 октября 2018

Laravel 5

Как предоставить пользователю доступ к определенному маршруту при соблюдении определенных условий?

Например, разрешить пользователю доступ

Route::get(view('posts/{id}'),'PostsController@show');

, если у пользователя более 100точки в его столбце user-> points.

1 Ответ

0 голосов
/ 20 октября 2018

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

Для этого необходимы следующие шаги:

  1. run command php artisan make:middleware Middlewarename и вы найдете ваше промежуточное ПО внутри app/Http/Middleware/yourcustomemiddleware.php
  2. Зарегистрируйте ваше промежуточное ПО в файле app/Http/kernel.php, который вы только что создали
  3. Теперь реализуйте логику в промежуточном ПО, которое вытолько что создал:

YourMiddlewareClassCode:

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    if (Auth::user()->points >= 100)
    {

        return $next($request);

    }

    return redirect()->back()->with('flash_message','you are not allowed to access this');
}
Прикрепите промежуточное программное обеспечение к вашему маршруту:

routs / web.php:

Route::get(view('posts/{id}'),'PostsController@show')->middleware('yourcustommiddleware');

Все сделано, теперь ваш маршрут защищен.

Сводка: этот оператор return $next($request); в промежуточном программном обеспечении вернет маршрут, когда будет выполнено условие, иначе он будет перенаправлен на предыдущий маршрут.

Примечание: Я не знаю вашу базу данныхструктура, а также это только пример, чтобы показать вам, что такое промежуточное программное обеспечение и как оно работает и как вы можете его использовать.

...