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 () {})