I followed this site on how to create user types and restrict page access. Everything works as expected, but I wanted the admin to also have access to the users pages. The app has several hierarchical levels and I don't want to have to repeat the same Route several times, how can I do that?
Im using this: (short version)
routes/web.php
...
Route::middleware(['auth', 'user-access:usr'])->group(function () {
Route::get('/', function () {
return view('pages.activityHome');
});
});
Route::middleware(['auth', 'user-access:adm'])->group(function () {
Route::get('activity/{id}/edit', [App\Http\Controllers\activityController::class, 'editActivity'])->name('edit.activity');
});
Models/User.php
...
protected function type(): Attribute
{
return new Attribute(
get: fn ($value) => ["usr", "adm"][(int) $value],
);
}
Http/Middleware/UserAccess.php
...
public function handle(Request $request, Closure $next, $userType)
{
if(auth()->user()->type == $userType){
return $next($request);
}
// return response()->view('errors.check-permission');
}
Http/Kernel.php
...
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'user-access' => \App\Http\Middleware\UserAccess::class,
];
This way the adm doesn't have access to /, but he should, how can I do it?
I tried how to place more elements in the array and put several groups separated by a comma, but it doesn't work.
Like this: ['auth', 'user-access:usr', 'user-access:adm']
, ['auth', 'user-access:usr,adm']