Laravel Add Custom Middleware to Route Group

min read

Day 44/100 #100DaysOfCode 

Chia sẻ với mọi người cách custom middleware trong Laravel. Thông thường ta hay phân quyền cho các user. Giữa User vs Role, ta có thể tạo middleware để kiểm tra việc này

php artisan make:middleware CheckUserAdminRole

Mở file middleware chúng ta vừa tạo ta có thể viết một số kiểm tra quyền như sau:

namespace App\Http\Middleware;
use Closure;
class CheckUserAdminRole
{
    public function handle($request, Closure $next)
    {
        if (auth()->check()) {
            if (auth()->check() && !auth()->user()->hasRole('admin')) {
                auth()->logout();
                return redirect(route('system.messages','userIsNotAdmin'));
            }
        }
        return $next($request);
    }
}

Trong User model ta cũng nhớ cần phải thêm:

public function hasRole($role)
{
    return User::where('role', $role)->get();
}

Tuỳ vào việc ban muốn ử lý sao thì xử lý nhé, để sử dụng được file trên ta cũng cần phải mở file app/Http/Kernel.php thêm cấu hình middleware của ta vào như sau:

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

Sau đó bạn có thể dùng nó trong route nhé:

Route::group(['namespace' => 'Dashboard', 'middleware' => ['auth:web','checkAdmin'], 'prefix' => 'dashboard'], function () {})

 

x

Ủng hộ tôi bằng cách click vào quảng cáo. Để tôi có kinh phí tiếp tục phát triển Website!(Support me by clicking on the ad. Let me have the money to continue developing the Website!)