Laravel Create Custom Middleware для проверки прав пользователей через маршруты - PullRequest
0 голосов
/ 17 мая 2019

Я хотел бы создать пользовательское промежуточное программное обеспечение, чтобы проверить, разрешено ли моему пользователю входить в класс. Маршруты, относящиеся к классной комнате, должны быть защищены промежуточным программным обеспечением ClassRoom, чтобы проверить разрешение пользователя перед перенаправлением на контроллеры.

Это группа маршрутов в классе:

Route::group(['prefix' => 'classroom/{classroom_id}', 'namespace' => 'Classroom', 'as' => 'classroom.'], function(){
    Route::resource('dashboard', 'DashboardController')->only(['index', 'create', 'store']);
});

Это код для проверки разрешения:

    $classroom = ClassRoom::findOrFail($classroom_id);

        $ok = false;
        foreach ($classroom->users as $classroom_user) {
          if ($classroom_user->id == user()->id) {
            $ok = true;
          }
        }

        if (!$ok) {
          return redirect()->route('user.classrooms.index');
        }

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Команда запуска:

php artisan make:middleware CheckPermission

Ваше промежуточное ПО:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckPermission
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

       // apply your permission logic here

        return $next($request);
    }
}

app / Http / Kernel.php

protected $routeMiddleware = [
    ... ,
    'check-permission' => \App\Http\Middleware\CheckPermission::class,
];

В файле маршрута (web.php)

Route::group(['middleware' => ['check-permission'], 'prefix' => 'classroom/{classroom_id}', 'namespace' => 'Classroom', 'as' => 'classroom.'], function(){
    Route::resource('dashboard', 'DashboardController')->only(['index', 'create', 'store']);
});
0 голосов
/ 17 мая 2019

Для создания промежуточного программного обеспечения в laravel вы используете php artisan make: middleware YourCustomMiddleWare

Затем вам нужно будет зарегистрировать его в app / Http / Kernel.php в защищенном массиве routeMiddleware

Вы добавляете его в маршрут как обычное промежуточное ПО

https://laravel.com/docs/5.8/middleware

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...