@angelina-ss
middlewares apply in a row, like 'AND' and you want 'OR'
You should define only one, with the 2 roles
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
hello i want to give access to my resource routes to 2 roles (using their relationship user()->roleweb->role_id): // role_id = 1, 2, 3, 4
and i have a multiple middleware to group my routes:
Route::middleware(['data.manager', 'data.entry'])->group(function () {
Route::resource('/dashboard/kliens', DashboardKlienController::class);
// Kontak Klien
Route::resource('kliens.kontaks', KontakKlienController::class);
// Kontak Lain Klien
Route::resource('kliens.kontaklains', KontakLainKlienController::class);
});
and these are the middleware:
'data.manager' => \App\Http\Middleware\IsDataManager::class,
'data.entry' => \App\Http\Middleware\IsDataEntry::class,
class IsDataManager
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if(!auth()->check() || auth()->user()->role_id !== 2) {
abort(403);
}
return $next($request);
}
}
class IsDataEntry
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if(!auth()->check() || auth()->user()->role_id !== 3) {
abort(403);
}
return $next($request);
}
}
it seems not to be working and my 2 roles can't access the routes at all & redirected to 403. thank you in advance
@angelina-ss
To be tested , but I should write
if(!auth()->check() || (auth()->user()->role_id !== 2 && auth()->user()->role_id !== 3) ) {
Please or to participate in this conversation.